Laravel 5.2使用中间件嵌套路由组



问题:

  1. 会话::flash不工作
  2. 怪异路线参数

问题1

我遇到一个错误,会话::flash无法工作。我也找到了一个变通办法,但它是。。奇怪的

我认为嵌套组和中间件有问题。

代码:

Route::group(['middleware' => 'web'], function () {
    Route::group([
            'prefix' => '{locale}',
            'middleware' => ['localized']
        ], function($locale)
    {
        Route::resource('/', 'ProductController', ['only' => ['index']]);
        Route::get('/cart', 'CartController@show')->name('show-shopping-cart');
    });
    Route::patch('/cart', 'CartController@update')->name('patch-cart');
});

现在。。如果我以这种方式修改kernel.php,这将起作用:

来自

protected $middleware = [
    IlluminateFoundationHttpMiddlewareCheckForMaintenanceMode::class,
];
protected $middlewareGroups = [
    'web' => [
        AppHttpMiddlewareEncryptCookies::class,
        IlluminateCookieMiddlewareAddQueuedCookiesToResponse::class,
        IlluminateSessionMiddlewareStartSession::class,
        IlluminateViewMiddlewareShareErrorsFromSession::class,
        AppHttpMiddlewareVerifyCsrfToken::class,
    ],
    'api' => [
        'throttle:60,1',
    ],
];

protected $middleware = [
    IlluminateFoundationHttpMiddlewareCheckForMaintenanceMode::class,
    AppHttpMiddlewareEncryptCookies::class,
    IlluminateCookieMiddlewareAddQueuedCookiesToResponse::class,
    IlluminateSessionMiddlewareStartSession::class,
    IlluminateViewMiddlewareShareErrorsFromSession::class,
    AppHttpMiddlewareVerifyCsrfToken::class,
];
protected $middlewareGroups = [
    'web' => [
    ],
    'api' => [
        'throttle:60,1',
    ],
];

你觉得怎么样?

问题2

在上述路线中,ProductController@show正在获取两个参数:locale和id。

例如,如果我导航到/en/4

function show($id){
    dd($id);
}

$id="en"

它会这样工作:

function show($locale, $id){
    dd($id);
}

这是故意的吗?如果是,有没有办法避免$locale被传递给组内的路由?

找到答案

https://stackoverflow.com/a/36298013/4805056

原来的帖子说要取代

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

带有

Route::group(['middlewareGroups' => ['web']], function () {
   ...
});

最新更新