我想要拉拉维尔曲奇,但我似乎不能让它工作。
因此,我想做一个基本的拉力维尔,相当于:
setcookie("TestCookie", $value, time() + 3600 * 24 * 365);
echo $_COOKIE["TestCookie"];我用了这个,但没有成功,它没有打印任何东西:
Cookie::make('TestCookie', $value, 60 * 24 * 365);
echo Cookie::get('TestCookie');同样的也适用于
Cookie::queue('TestCookie', $value, 60 * 24 * 365);
echo Cookie::get('TestCookie');或
Cookie::forever('TestCookie', $value);
echo Cookie::get('TestCookie');我想在我的BaseController __construct方法中这样做:
if (Session::has('hash') && !Cookie::has('hash'))
{
Cookie::queue('hash', Session::get('hash'), $this->cookieLifeTime);
}
else if (Cookie::has('hash') && !Session::has('hash'))
Session::put('hash', Cookie::get('hash'));
else if (!Session::has('hash') && !Cookie::has('hash'))
{
$hash = str_shuffle(sha1(uniqid()));
Session::put('hash', $hash);
Cookie::queue('hash', Session::get('hash'), $this->cookieLifeTime);
}谢谢:)
发布于 2014-10-06 08:11:51
Cookie::make只创建Cookie类的新实例。
在创建实例之后,应该使用Response返回它。
$cookie = Cookie::make('TestCookie', $value, 60 * 24 * 365);
return Response::view('view')->withCookie($cookie);此外,您也可以使用Redirect进行同样的操作。
return Redirect::to('somewhere')->withCookie($cookie)PS。注意,该cookie只有在页面重新启动后才可用。对Cookie:queue(...)来说也一样
Cookie:queue()的主要区别在于,Laravel将在当前Response的末尾自动附加您的Cookie。但在下一次请求(打开页面)之前,它仍然不可用
更新
根据您的评论,我刚刚测试了以下代码:
Cookie::queue(Cookie::make('test', 'test'));
echo (Cookie::has('test')) ? Cookie::get('test') : 'null';效果很好。
更新2
尝试在/app/config/sessions.php中设置正确的域名,在某些情况下可能会有所帮助。
发布于 2014-10-06 08:20:11
你需要改变:
Cookie::queue('TestCookie', $value, 60 * 24 * 365);
echo Cookie::get('TestCookie');转入:
if (Cookie::has('TestCookie')) {
echo Cookie::get('TestCookie');
}
else {
Cookie::queue('TestCookie', $value, 60 * 24 * 365);
}与PHP一样,如果页面尚未刷新,则无法显示cookie。因此,首先设置cookie,当重新加载页面时,应该设置cookie,然后应用程序可以显示其值。
https://stackoverflow.com/questions/26212010
复制相似问题