Cookies Cookie未保存在OctorberCMS中

Cookies Cookie未保存在OctorberCMS中,cookies,octobercms,Cookies,Octobercms,我试图通过octobercms ajax将一个项目保存到cookie中,但cookie未被保存: HTML 保存项目 PHP 函数onSaveItem(){ $item_id=Input::get('item_id'); Cookie::forever('saved_item',$item_id); } 因此,当我尝试在page start上检索cookie时,它返回NULL: 函数onStart(){ var_dump(Cookie::get('saved_item'); } //输出:空

我试图通过octobercms ajax将一个项目保存到cookie中,但cookie未被保存:

HTML

保存项目
PHP

函数onSaveItem(){
$item_id=Input::get('item_id');
Cookie::forever('saved_item',$item_id);
}
因此,当我尝试在page start上检索cookie时,它返回
NULL

函数onStart(){ var_dump(Cookie::get('saved_item'); } //输出:空
使用cookies也花了我一段时间来理解。我希望我写的足够清楚。基本上,您不会将cookie返回到浏览器以将其添加到应用程序存储中。我创建了一个示例页面,您可以看到

第一个示例是一个常见的html表单

{{form_open({request:'onSaveItemRedirect'}}}
保存项目
{{form_close()}}
此表单将post信息发送到
onSaveItemRedirect
。需要注意的关键是cookie队列。这允许服务器在标题中发送带有重定向的炊具

函数onSaveItemRedirect(){ $item_id=Input::get('item_id'); $cookie=cookie::forever($saved\u item',$item\u id); Cookie::队列($Cookie); 返回重定向::刷新(); } 第二个示例使用AJAX API,稍微复杂一些。请注意,我使用的是partial和
数据请求complete
方法。这将使用JavaScript函数更新分部代码,
updateCookie()
,并完成AJAX上的新cookie

{%partial'cookie/测试“%”
{form_ajax('onSaveItemAjax',{'complete':'updateCookie()'}}}
保存项目
{{form_close()}}
脚本:


函数updateCookie(){
$.request('onUpdateCookiePartial'{
更新:{'cookie/test':'#cookiePartial'}
});
}
PHP:注意这里您应该返回一个带有cookie信息的响应。当响应返回并完成时,AJAX API向
onUpdate CookiePartial()
发送一个请求。在运行事件处理程序时返回某些内容是一种很好的做法;在这种情况下,
true

函数onSaveItemAjax(){ $item_id=Input::get('item_id'); $cookie=cookie::forever($saved\u item',$item\u id); 返回响应::json(['Success'])->withCookie($cookie); } 函数onUpdateCookiePartial(){ 返回true; }
使用cookies也花了我一段时间来理解。我希望我写的足够清楚。基本上,您不会将cookie返回到浏览器以将其添加到应用程序存储中。我创建了一个示例页面,您可以看到

第一个示例是一个常见的html表单

{{form_open({request:'onSaveItemRedirect'}}}
保存项目
{{form_close()}}
此表单将post信息发送到
onSaveItemRedirect
。需要注意的关键是cookie队列。这允许服务器在标题中发送带有重定向的炊具

函数onSaveItemRedirect(){ $item_id=Input::get('item_id'); $cookie=cookie::forever($saved\u item',$item\u id); Cookie::队列($Cookie); 返回重定向::刷新(); } 第二个示例使用AJAX API,稍微复杂一些。请注意,我使用的是partial和
数据请求complete
方法。这将使用JavaScript函数更新分部代码,
updateCookie()
,并完成AJAX上的新cookie

{%partial'cookie/测试“%”
{form_ajax('onSaveItemAjax',{'complete':'updateCookie()'}}}
保存项目
{{form_close()}}
脚本:


函数updateCookie(){
$.request('onUpdateCookiePartial'{
更新:{'cookie/test':'#cookiePartial'}
});
}
PHP:注意这里您应该返回一个带有cookie信息的响应。当响应返回并完成时,AJAX API向
onUpdate CookiePartial()
发送一个请求。在运行事件处理程序时返回某些内容是一种很好的做法;在这种情况下,
true

函数onSaveItemAjax(){ $item_id=Input::get('item_id'); $cookie=cookie::forever($saved\u item',$item\u id); 返回响应::json(['Success'])->withCookie($cookie); } 函数onUpdateCookiePartial(){ 返回true; }
您只需将其排队,并确保之后不会退出php代码,因为cookie将使用响应发送回客户端

服务器端cookie不能从客户端读取,只能从服务器端访问和读取
函数onSaveItem(){
$item_id=Input::get('item_id');
Cookie::queue(Cookie::forever('saved_item',$item_id));
返回响应::json(['success'=>true],200);
}
若您只需要这样使用的客户端cookie,那个么就不能从服务器读取它 我想这很简单,因为cookie是客户端的,所以您可以在客户端轻松地操作它


保存项目
它将存储cookie的最长时间,如永久:)

您还可以使用其他API属性,如
数据请求错误
数据请求完成(案例错误或成功)
来存储cookie


如果有任何疑问,请发表评论。

您只需将其排队,并确保之后不会退出php代码,因为cookie将使用response发送回客户端

服务器端cookie不能从客户端读取,只能从服务器端访问和读取
函数onSaveItem(){
$item_id=Input::get('item_id');
Cookie::queue(Cookie::forever('saved_item',$item_id));
返回响应::json(['success'=>true],200);
}
若您只需要这样使用的客户端cookie,那个么就不能从服务器读取它 我想这很简单,因为cookie是客户端的,所以您可以在客户端轻松地操作它


保存项目
它将存储coo