【问题标题】:Laravel: route:cache not use files in subdirectoriesLaravel:路由:缓存不使用子目录中的文件
【发布时间】:2019-07-10 11:58:02
【问题描述】:
我的项目中有很多路由,我没有将所有网络路由存储在单个文件中,我使用子目录。
例如,当我编写主路由时,我有标准的 routes/web.php,并且在这个目录中我创建了子目录 routes/groups。我有几个按某些类别分开的文件。当我不使用路由缓存时它工作正常。但是,如果我尝试通过php artisan route:cache 创建缓存,它只会为标准文件创建缓存,例如:routes/web.php、routes/channels.php 等。
即使我在 web.php 上添加了 require_once 它也不起作用!
路由缓存有什么问题?
Laravel 版本:5.6
【问题讨论】:
标签:
php
laravel
caching
routing
【解决方案1】:
在子目录中定义路由的正确方法是在RouteServiceProvider.php 文件中进行。 php artisan route:cache 会考虑这些路线。
在您的情况下,在 mapWebRoutes() 函数中添加以下脚本应该可以工作:
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/groups/{your-filename}.php'));
您还可以为每个路由文件分配单独的前缀、命名空间、分配中间件。例如:
Route::middleware('web')
->namespace($this->namespace)
->prefix('groups')
->group(base_path('routes/groups/{your-filename}.php'));
注意:
route:cache 不适用于基于闭包的路线。所以你必须避免它才能使用route:cache。