多模块路由

自动加载路由组中间件

modules.php配置文件中,可以通过配置auto_use_middleware_groups属性,决定加载 Modules 模块里面的路由时候, 是否根据路由文件名 自动加载 \App\Http\Kernel::class->$middlewareGroups 里面 已经存在的 中间件

   /*
    |--------------------------------------------------------------------------
    | 加载 Modules 模块里面的路由的时候 ,是否根据路由文件名 自动加载 `\App\Http\Kernel::class`->$middlewareGroups 里面 存在的 中间件
    |--------------------------------------------------------------------------
    |
    | 默认开启
    |
    */
    'auto_use_middleware_groups'     => true,

例如开启了上面的配置,在自动加载 Modules > 模块 > Routes > admin.php(或其他路由文件)时候,会去\App\Http\Kernel::class->$middlewareGroups 配置里面 查看 是否配置了名字为admin路由中间件组,如果存在,则admin.php 里面的路由都会使用admin路由中间件组
示例

    /**
     * The application's route middleware groups.
     *
     * @var array<string, array<int, class-string|string>>
     */
    protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
            \Modules\Core\Http\Middleware\WebAuthCommonPrivilege::class
        ],

        'admin' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
            \Modules\Core\Http\Middleware\AdminAuthPrivilege::class
        ],

        'api' => [
            // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
            \Illuminate\Routing\Middleware\ThrottleRequests::class.':api',
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],
    ];

多模块路由前缀

modules.php配置文件中,可以通过配置route_need_add_prefix_and_name属性,决定加载 Modules 模块里面的路由模块时候, 是否根据路由文件名 自动加载路由前缀和路面名

    /*
    |--------------------------------------------------------------------------
    | 加载模块 Modules 模块路由时候 xxx.php 文件里面的路由需要自动添加上同名 `xxx`前缀和 `xxx.` 路由命名 的路由文件
    |--------------------------------------------------------------------------
    |
    | 默认['api'] 表示 api.php 里面的路由全部加上`api`前缀和 `api.` 路由命名
    |
    */
    'route_need_add_prefix_and_name' => ['api'],

例如:

'route_need_add_prefix_and_name' => ['api','admin','crm'],

则表示在加载路由api.phpadmin.phpcrm.php的时候,里面的路由都分别自动加上了apiadmincrm路由前缀和api.admin.crm. 命名
多模块中的 api.php 路由文件中的路由,在加载的时候就自动加上了api前缀了,
加载时候只有api.php 路由会加载api中间件,其他路由会自动加载web中间件
等同于自动加上了下面这样的一层路由组

Route::prefix('admin')->name('admin.')->group(function () {
	...
});