为什么在 Laravel 中不能工作组中间件?

Gri*_*dov 2 laravel laravel-5.2

我在路由 Laravel 时使用以下中间件:

Route::group(['middleware' => 'web'], function () {

    Route::resource('Order', 'OrderController');
});
Run Code Online (Sandbox Code Playgroud)

当我尝试在 URL 中调用此路径时:

http://localhost/web/order
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

抱歉,找不到您要找的页面。

在RouteCollection.php第161行在RouteCollection->match(object(Request))在Router.php第821行在Router->findRoute(object(Request))在Router.php第691行在Router->dispatchToRoute(object(Request) ) 在 Router->dispatch(object(Request)) 的 Router.php 行 675 在 Kernel->Illuminate\Foundation\Http{closure}(object(Request)) 在 call_user_func(object(Closure) 的 Kernel.php 行的 246 行中, object(Request)) 在 Pipeline->Illuminate\Routing{closure}(object(Request)) 在 Pipeline->Illuminate\Routing{closure}(object(Request)) 在 CheckForMaintenanceMode.php 第 44 行在 CheckForMaintenanceMode->handle(object(Request), object(Closure)) 在call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) 在 Pipeline.php 的第 136 行在 Pipeline->Illuminate\Pipeline{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32 at Pipeline->Illuminate\Routing{closure}(object(Request)) at call_user_func( object(Closure), object(Request)) 在 Pipeline.php 第 102 行在 Pipeline->then(object(Closure)) 在 Kernel.php 第 132 行在 Kernel->sendRequestThroughRouter(object(Request)) 在 Kernel.php 第 99 行在 Kernel->handle(object(Request)) in index.php 第 53 行句柄(对象(请求))在 index.php 第 53 行句柄(对象(请求))在 index.php 第 53 行

Mar*_*ian 5

Route::group();顾名思义,用于将具有共同点的路由分组。

'middleware' => 'web'将使内部的所有路由共享同一组中间件或共享相同的中间件。看看app/Http/Kernel.php

中间件不会影响您的路由 URL,但不会影响您的应用程序中路由的处理方式。

'prefix' => 'web'将使您的所有路线共享相同的路径。这看起来更符合您的需求。

正确的代码将是:

Route::group(['prefix' => 'web'], function () {
    Route::resource('Order', 'OrderController');
});
Run Code Online (Sandbox Code Playgroud)

访问此路由的 URL 将是:

/web/order

要同时使用带有 guard 的前缀web和中间件,代码将是:authapi auth:api

Route::group(['prefix' => 'web', 'middleware' => ['auth:api']], function () {
    Route::resource('Order', 'OrderController');
});
Run Code Online (Sandbox Code Playgroud)