【发布时间】:2016-08-27 17:24:16
【问题描述】:
问题:
- Session::flash 不起作用
- 奇怪的路由参数
问题 1
我遇到了 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 传递给组内的路由?
【问题讨论】:
标签: php laravel-5.2