Laravel的Cookie没有设置主页上,而是设置在其他地方

问题描述:

我们在helpers.php这个函数,返回郎Laravel的Cookie没有设置主页上,而是设置在其他地方

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); 
} 

哎呀,这似乎错误是在主页的路线是与web middleware在一组,但我们还是将它设置

Route::get('/', [ 
    'uses' => '[email protected]', 
    'as' => 'root', 
    'middleware' => 'web' 
]); 

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