recoded/dynamic-routes

此包已被弃用,不再维护。没有推荐替代包。

创建基本动态路由的库(例如基于语言)

dev-master 2021-02-26 19:17 UTC

This package is auto-updated.

Last update: 2024-06-23 12:11:20 UTC


README

此包允许您拥有基本的动态可缓存路由。

安装

composer require recoded/dynamic-routes

该包具有自动发现功能,如果不起作用,则应在配置文件中 Providers 部分添加 Recoded\DynamicRoutes\RouteServiceProvider 到您的 app.php

php artisan vendor:publish --provider="Recoded\DynamicRoutes\RouteServiceProvider"

此步骤是可选的,但如果你想更改 DynamicRouteResolver 则是必须的。

工作原理

该包基于 DynamicRouteResolver 接口/合同。它强制你提供一个数组,包含动态变量可以接收的所有可能的值,以便预先缓存路由及其所有变体。此合同还有一个 resolve 方法,用于检索当前动态值。(这作为 Laravel 路由器上 dynamic 宏的回调的第一个参数传递)

用法

该包附带默认的 LocaleRouteResolver,它查看应用程序的当前区域设置,例如使用 app()->setLocale() 设置,并使用您语言资源内部的所有文件夹作为可能的值。当您有一个例如根据 URL 的第一个部分(例如 /en, /nl, /de)或子域确定应用程序区域设置的 ServiceProvider 时,这很有用。(无状态数据)

示例

我认为不需要解释 DynamicRouteResolver,它非常直观。但这里有一个示例,展示你可以根据例如语言加载不同的路由。

Route::dynamic(function (string $key) {
    require sprintf('%s/%s.php', __DIR__, $key);
});

这允许你为你的应用程序支持的每种语言分别创建文件。但你也可以使用例如 trans() 辅助函数来翻译你的路由。

警告

DynamicRouteResolver 在中间件之前解析,因此你将无法使用会话值。这是有意义的,因为路由发生在中间件之前。