首页 > 解决方案 > 向laravel添加超过1个路由文件?

问题描述

我可以看到这个RouteServiceProvider.php

Route::prefix('api')
      ->middleware('api')
      ->namespace($this->namespace)
      ->group(base_path('routes/api.php'));

  Route::middleware('web')
      ->namespace($this->namespace)
      ->group(base_path('routes/web.php'));

但是当我尝试添加一个时:

  Route::middleware('web')
      ->namespace($this->namespace)
      ->group(base_path('themes/myTheme/web.php'));

然后它不会拾取第二个web.php文件。但是如果我删除第一个web.php引用,那么第二个引用就会被拾取。所以看起来 Laravel 只想要一个web.php。但是,即使这样也行不通:

  Route::middleware('myTheme')
      ->namespace($this->namespace)
      ->group(base_path('themes/myTheme/web.php'));

有没有办法让第二个 web.php 文件工作?

我已经尝试/考虑过:

有任何想法吗?

更新 1

我试过这个,但它似乎不适用于 Laravel 8:

protected function mapApiRoutes()
{
    Route::prefix('api')
         ->middleware('api')
         ->namespace($this->namespace)
         ->group(function ($router) {
            require base_path('routes/admin.php');
            require base_path('routes/category.php');
        });
}

标签: laravellaravel-routing

解决方案


  Route::prefix('api')
      ->middleware('api')
      ->namespace($this->namespace)
      ->group(base_path('routes/api.php'));

  Route::middleware('web')
      ->namespace($this->namespace)
      ->group(base_path('routes/web.php'));

  Route::middleware('web')
      ->namespace($this->namespace)
      ->group(base_path('storage/routes/web2.php')); // 'themes/myTheme/web.php' in your case

这将起作用,但不要忘记php artisan route:cache在更改后运行命令


推荐阅读