Laravel cookie未在主页上设置,但在其他地方设置

时间:2016-04-14 19:45:51

标签: php cookies laravel-5.2

我们在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);
}

1 个答案:

答案 0 :(得分:0)

糟糕,似乎错误是主页路由在web middleware的组中,但我们仍在设置

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

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