问题:
- 会话::flash不工作
- 怪异路线参数
问题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 () {
...
});