首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Laravel饼干?

问如何使用Laravel饼干?
EN

Stack Overflow用户
提问于 2014-10-06 07:58:26
回答 2查看 1.6K关注 0票数 1

我想要拉拉维尔曲奇,但我似乎不能让它工作。

因此,我想做一个基本的拉力维尔,相当于:

代码语言:javascript
复制
setcookie("TestCookie", $value, time() + 3600 * 24 * 365);
echo $_COOKIE["TestCookie"];

我用了这个,但没有成功,它没有打印任何东西:

代码语言:javascript
复制
Cookie::make('TestCookie', $value, 60 * 24 * 365);
echo Cookie::get('TestCookie');

同样的也适用于

代码语言:javascript
复制
Cookie::queue('TestCookie', $value, 60 * 24 * 365);
echo Cookie::get('TestCookie');

或

代码语言:javascript
复制
Cookie::forever('TestCookie', $value);
echo Cookie::get('TestCookie');

我想在我的BaseController __construct方法中这样做:

代码语言:javascript
复制
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);
}

谢谢:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-06 08:11:51

Cookie::make只创建Cookie类的新实例。

在创建实例之后,应该使用Response返回它。

代码语言:javascript
复制
$cookie = Cookie::make('TestCookie', $value, 60 * 24 * 365);
return Response::view('view')->withCookie($cookie);

此外,您也可以使用Redirect进行同样的操作。

代码语言:javascript
复制
return Redirect::to('somewhere')->withCookie($cookie)

PS。注意,该cookie只有在页面重新启动后才可用。对Cookie:queue(...)来说也一样

Cookie:queue()的主要区别在于,Laravel将在当前Response的末尾自动附加您的Cookie。但在下一次请求(打开页面)之前,它仍然不可用

更新

根据您的评论,我刚刚测试了以下代码:

代码语言:javascript
复制
Cookie::queue(Cookie::make('test', 'test'));

echo (Cookie::has('test')) ? Cookie::get('test') : 'null';

效果很好。

更新2

尝试在/app/config/sessions.php中设置正确的域名,在某些情况下可能会有所帮助。

票数 3
EN

Stack Overflow用户

发布于 2014-10-06 08:20:11

你需要改变:

代码语言:javascript
复制
Cookie::queue('TestCookie', $value, 60 * 24 * 365);
echo Cookie::get('TestCookie');

转入:

代码语言:javascript
复制
if (Cookie::has('TestCookie')) {
   echo Cookie::get('TestCookie');
}
else {
    Cookie::queue('TestCookie', $value, 60 * 24 * 365);
}

与PHP一样,如果页面尚未刷新,则无法显示cookie。因此,首先设置cookie,当重新加载页面时,应该设置cookie,然后应用程序可以显示其值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26212010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档