Laravel 8中如何为路由添加description自定义描述信息
Laravel 8.83.17 路由添加自定义信息实现方法
完全支持你期望的链式调用写法,不需要修改框架源码,用Laravel原生提供的路由宏能力就能实现,8.83.17版本实测可用,路由缓存场景下也不会失效。
- 核心原理是通过宏给路由类追加自定义方法,把额外信息存在路由原生的action属性数组中,框架本身就支持在action中存储自定义配置。
具体实现
- 打开
app/Providers/AppServiceProvider.php,在boot方法中注册宏:
use Illuminate\Routing\Route; public function boot() { Route::macro('description', function (string $description) { $this->action['description'] = $description; return $this; }); }
- 注册完之后,你预期的路由定义代码可以直接运行,不需要做任何调整:
Route::get('/home', 'IndexController@index')->name('home')->description('Test');
读取自定义的description字段
// 获取当前访问路由的描述 $desc = request()->route()->getAction('description'); // 遍历全量路由批量获取描述 foreach (Route::getRoutes() as $route) { $routeDesc = $route->getAction('description'); }
注意事项
- 该实现兼容
php artisan route:cache命令,自定义字段会被正常写入路由缓存文件,不会出现缓存后丢失的问题。 - 如果需要添加其他自定义字段,比如权限标识、菜单图标这类,按照相同格式追加宏定义即可,不需要额外做兼容处理。
内容的提问来源于stack exchange,提问作者Ricardo Afonso
相关产品推荐
相关产品推荐

