php - 带中间件的 Laravel 5.2 嵌套路由组

标签 php laravel-5.2

问题:

  1. Session::flash 不工作
  2. 奇怪的路由参数

问题一

我遇到了 Session::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 = [
    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
];

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,
    ],

    'api' => [
        'throttle:60,1',
    ],
];

protected $middleware = [
    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
    \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,
];

protected $middlewareGroups = [
    'web' => [
    ],

    'api' => [
        'throttle:60,1',
    ],
];

你怎么看?

问题2

在上面的路由中,ProductController@show 获得了 2 个参数:locale 和 id。

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

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

$id = "zh"

它会这样工作:

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

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

最佳答案

找到答案

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

原帖说要替换

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

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

关于php - 带中间件的 Laravel 5.2 嵌套路由组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36991029/

相关文章:

php - 为什么我没有为 header 显示不同的 PHP 日期值?

php - 扩展Magento的核心类时,我需要更改哪种XML结构才能使更改生效?

php - Laravel - 导致 404 错误的事件

php - Laravel 5 中的钩子(Hook)?

php - 无法从 iOS 添加到 MySQL 的条目

javascript - 在 WordPress 中,如何将多个变量传递到 URL 并检索它们?

php - 更改 OpenCart 中的过滤行为

php - Laravel 5.2 - 网络服务问题

mysql - 如何为不同的类使用 Relation::morphMap()

php - 在 Laravel 5.2 中选择列值相等的行