Laravel cookie没有设置在主页上,但在其他地方都设置了


Laravel cookie not set on home page but is set everywhere else

我们在helpers.php中有这个函数,它返回lang

function locale() {
  if(Cookie::has('locale') && array_key_exists(Cookie::get('locale'), Config::get('languages'))) {
    $locale = Cookie::get('locale');
  } else {
    $locale = 'en';
  }
  return $locale;
}

在每一页上,它都能工作并返回正确的值。但是,由于某种原因,仅在索引页上,它总是"en"。

我们就是这样设置的:

function setLocale(Request $request) {
  $locale = $request->input('locale');
  if(array_key_exists($locale, 'Config::get('languages'))) {
    $cookie = cookie()->forever('locale', $locale);
    'App::setLocale($locale);
  }
  return redirect()->back()->withCookie($cookie);
}

Whoops,似乎错误是主页路由与web middleware在一个组中,但我们仍将其设置为

Route::get('/', [
  'uses' => 'HomeController@index',
  'as' => 'root',
  'middleware' => 'web'
]);

从这个部分中删除中间件,因为它已经存在于路由组中,解决了这个问题。