Laravel:route:缓存不使用子目录中的文件

时间:2019-07-10 11:58:02

标签: php laravel caching routing

我的项目中有很多路由,并且我没有将所有Web路由存储在单个文件中,而是使用子目录。 例如,当我编写主路由时,我具有标准的route / web.php,并且在该目录中创建了子目录route / groups。那里有几个文件,按类别分开。当我不使用路由缓存时,它可以正常工作。但是,如果我尝试通过php artisan route:cache创建缓存,则它只会为标准文件(例如:routes / web.php,routes / channels.php等)创建缓存。 即使我在web.php上添加require_once也行不通! 路由缓存有什么问题?

Laravel版本:5.6

1 个答案:

答案 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,您必须避免使用它。