根据 Laravel 7 中的 cookie 值控制路由
Control route based on cookie value in Laravel 7
我正在尝试根据 cookie 设置 URL 的语言目录。
在routes/web.php
中我添加了这条测试路线:
Route::get('/test', function () {
$cookie = cookie('language', 'fr', 120);
//do some logic to specify locale based on cookie value
$lang = Cookie::get('language');
return 'Langauge ='.$lang;
});
但是该代码不会创建任何 cookie。当我稍后在同一个路由文件中检查它时:
if (Cookie::get('language') !== null) {
//do something
}
我什么都不懂
我可以从路由创建和读取 cookie 吗?
如果位置不正确,我如何检测每次页面加载时的 cookie 值以在我的路由中使用该值?
(P.S。我看到有人问同样的问题,但没有好的答案)。
更新
所以我的真实路线是这样的:
Route::group(array('prefix' => Config::get('app.locale_prefix')), function()
{
Route::get('/', 'HomeController@getHomeData')->name('home');
});
我怎样才能基本上保存 cookie 并将其附加到输出?
如果你想在控制器中进行。
这是您设置 cookie 的方式,
$cookie = cookie('language', 'fr', 120);
return response('done')->cookie($cookie);
这就是你得到它的方式。
$value = request()->cookie('language');
return response($value);
首先您需要设置 cookie
值并发送响应。您可以从您的路由或控制器方法中检索任何后续 request()
中的 cookie
值。这是一个例子
Route::get('/set-cookie', function () {
return response('Cookie set successfully')->cookie('language', 'fr', 120);
});
Route::get('/get-cookie', function () {
return request()->cookie('language');
});
在你的控制器方法中
public function index(){
return response(view('welcome'))->withCookie(cookie('language', 'fr', 120));
}
并且您可以在 welcome.blade.php
上检索为
{{ request()->cookie('language') ?? 'No cookie set '}}
我正在尝试根据 cookie 设置 URL 的语言目录。
在routes/web.php
中我添加了这条测试路线:
Route::get('/test', function () {
$cookie = cookie('language', 'fr', 120);
//do some logic to specify locale based on cookie value
$lang = Cookie::get('language');
return 'Langauge ='.$lang;
});
但是该代码不会创建任何 cookie。当我稍后在同一个路由文件中检查它时:
if (Cookie::get('language') !== null) {
//do something
}
我什么都不懂
我可以从路由创建和读取 cookie 吗? 如果位置不正确,我如何检测每次页面加载时的 cookie 值以在我的路由中使用该值?
(P.S。我看到有人问同样的问题,但没有好的答案)。
更新
所以我的真实路线是这样的:
Route::group(array('prefix' => Config::get('app.locale_prefix')), function()
{
Route::get('/', 'HomeController@getHomeData')->name('home');
});
我怎样才能基本上保存 cookie 并将其附加到输出?
如果你想在控制器中进行。
这是您设置 cookie 的方式,
$cookie = cookie('language', 'fr', 120);
return response('done')->cookie($cookie);
这就是你得到它的方式。
$value = request()->cookie('language');
return response($value);
首先您需要设置 cookie
值并发送响应。您可以从您的路由或控制器方法中检索任何后续 request()
中的 cookie
值。这是一个例子
Route::get('/set-cookie', function () {
return response('Cookie set successfully')->cookie('language', 'fr', 120);
});
Route::get('/get-cookie', function () {
return request()->cookie('language');
});
在你的控制器方法中
public function index(){
return response(view('welcome'))->withCookie(cookie('language', 'fr', 120));
}
并且您可以在 welcome.blade.php
上检索为
{{ request()->cookie('language') ?? 'No cookie set '}}