我的项目中有很多路由,并且我没有将所有Web路由存储在单个文件中,而是使用子目录。
例如,当我编写主路由时,我具有标准的route / web.php,并且在该目录中创建了子目录route / groups。那里有几个文件,按类别分开。当我不使用路由缓存时,它可以正常工作。但是,如果我尝试通过php artisan route:cache
创建缓存,则它只会为标准文件(例如:routes / web.php,routes / channels.php等)创建缓存。
即使我在web.php上添加require_once也行不通!
路由缓存有什么问题?
Laravel版本:5.6
答案 0 :(得分:0)
在子目录中定义路由的正确方法是在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
,您必须避免使用它。