我在路由Laravel时使用以下中间件:
Route::group(['middleware' => 'web'], function () {
Route::resource('Order', 'OrderController');
});
当我尝试在URL中调用此路径时:
http://localhost/web/order
我收到一个错误:
抱歉,找不到您要查找的页面 . 在RouterCollection.php第161行的RouteCollection-> match(对象(请求))中的Router.php第821行在Router-> findRoute(对象(请求))在Router.php第691行的Router-> dispatchToRoute(对象(请求)) )在Router_> dispatch(对象(请求))的Router.php第675行中的Kernel.php第246行,在Kernel-> Illuminate \ Foundation \ Http (对象(请求))at call_user_func(object(Closure),对象(请求))在Pipeline-> Illuminate \ Routing中的Pipeline.php第52行,在CheckForMaintenanceMode.php第44行,CheckForMaintenanceMode-> handle(对象(请求),对象(关闭))处的路由(对象(请求))在Pipeline-> Illuminate \ Pipeline (object(Request))的Pipeline.php第136行中的call_user_func_array(array(object(CheckForMaintenanceMode),'handle'),array(object(Request),object(Closure)))在Pipeline中的Pipeline.php第32行中的call_user_func(object(Closure),object(Request))在管道中的call_user_func(object(Closure),object(Request))的Pipeline-> Illuminate \ Routing (object(Request))中 . php第10行2在Pipeline-> then(object(Closure))在Kernel.php第132行的Kernel-> sendRequestThroughRouter(object(Request))在Kernel.php第99行的Kernel-> handle(object(Request))中的index.php第53行
2 回答
Route::group();
,正如其名称所示,用于分组共享某些共同点的路线 .'middleware' => 'web'
将使所有路由共享同一组中间件或共享相同的中间件 . 看看app/Http/Kernel.php
.中间件不会影响您的路线网址,但会在您的应用中如何处理路线 .
'prefix' => 'web'
将使您的所有路由共享相同的路径 . 这更符合您的需求 .正确的代码是:
访问此路由的URL将是:
/web/order
要同时使用前缀
web
和中间件auth
与guardapi
auth:api
,代码将为:如果您要在帖子中查找网址,则应该使用
'prefix' => 'web'
而不是'middleware' => 'web'
. 默认情况下,Laravel 5.2包装'web'中间件中的所有路由,不必再次声明它 .我无法清楚地解释什么是中间件,除了它根据规则保护某些路由 . Laravel documentation on route prefixes