Laravel 10如何按控制器名称过滤route:list路由列表?
在Laravel 10中按控制器名称过滤路由列表
方法1:借助系统命令行工具过滤输出
Laravel的route:list命令没有内置按控制器名称过滤的参数,但可以通过系统文本过滤工具处理输出结果:
- Linux/macOS环境:使用
grep匹配控制器名称
若需要忽略大小写匹配,添加php artisan route:list | grep "YourControllerName"-i参数:php artisan route:list | grep -i "YourControllerName" - Windows环境:使用
findstr替代grepphp artisan route:list | findstr "YourControllerName"
方法2:结合JSON输出与jq工具精准过滤
如果要避免误匹配URI中包含相同字符串的路由,可通过JSON格式输出路由,再用jq工具精准筛选控制器字段:
- 确保已安装jq工具(Linux/macOS可通过系统包管理器安装,Windows可自行获取适配版本)
- 执行以下命令(替换
YourControllerName为目标控制器名称):
该命令仅返回包含指定控制器的路由条目,结果精准且格式清晰。php artisan route:list --json | jq '.[] | select(.controller | contains("YourControllerName"))'
方法3:通过Laravel Tinker查询路由
若需要自定义输出格式或添加复杂过滤条件(比如匹配特定命名空间),可在Tinker中直接操作路由实例:
- 启动Tinker:
php artisan tinker - 执行过滤代码(替换
YourControllerName为目标控制器名):Route::getRoutes()->filter(function ($route) { return str_contains($route->getAction()['controller'] ?? '', 'YourControllerName'); })->each(function ($route) { echo sprintf("%s %s -> %s\n", $route->methods()[0], $route->uri(), $route->getAction()['controller'] ?? '无控制器'); });
内容的提问来源于stack exchange,提问作者Robin Bastiaan
相关产品推荐
相关产品推荐

