我在路由Laravel时使用以下中间件:
Route::group(['middleware' => 'web'], function () {
Route::resource('Order', 'OrderController');
});
当我尝试在URL中调用此路径时:
http://localhost/web/order
我收到错误:
抱歉,找不到您要查找的页面。
在RouteCollection.php第161行中 RouteCollection->匹配(对象(请求))在Router.php第821行中 在Router.php第691行中的Router-> findRoute(object(Request)) Router.> dispatchToRoute(object(Request))在Router.php第675行中 Router->在Kernel.php第246行中的dispatch(对象(Request)) Kernel-> Illuminate \ Foundation \ Http {closure}(object(Request))at Pipeline.php行中的call_user_func(object(Closure),object(Request)) 52在Pipeline-> Illuminate \ Routing {closure}(object(Request))in CheckForMaintenanceMode.php第44行 CheckForMaintenanceMode-> handle(object(Request),object(Closure))at call_user_func_array(array(object(CheckForMaintenanceMode),'handle'), 在Pipeline.php第136行中的array(object(Request),object(Closure))) Pipeline-> Illuminate \ Pipeline {closure}(object(Request))at Pipeline.php行中的call_user_func(object(Closure),object(Request)) 32在管道 - > Illuminate \ Routing {closure}(对象(请求))at Pipeline.php行中的call_user_func(object(Closure),object(Request)) 102在Pipeline->然后(对象(Closure))在Kernel.php第132行at Kernel.php行中的Kernel-> sendRequestThroughRouter(object(Request)) 在index.php第53行中的Kernel->句柄(对象(请求))中的99
答案 0 :(得分:4)
Route::group();
用于对共享某些内容的路由进行分组。
'middleware' => 'web'
将使所有路由共享同一组中间件或共享相同的中间件。看看app/Http/Kernel.php
。
中间件不会影响您的路线网址,但会在您的应用中如何处理路线。
'prefix' => 'web'
将使您的所有路由共享相同的路径。这更符合您的需求。
正确的代码是:
Route::group(['prefix' => 'web'], function () {
Route::resource('Order', 'OrderController');
});
访问此路线的网址为:
/web/order
要同时使用前缀web
和中间件auth
加上后卫api
auth:api
,代码将为:
Route::group(['prefix' => 'web', 'middleware' => ['auth:api']], function () {
Route::resource('Order', 'OrderController');
});
答案 1 :(得分:1)
如果您要查找帖子中的网址,则应使用'prefix' => 'web'
代替'middleware' => 'web'
。默认情况下,Laravel 5.2将所有路由包装在' web'中间件,不必再次申报。
我无法清楚地解释什么是中间件,而不是基于规则来保护某些路线。 Laravel documentation on route prefixes