的Prestashop
我被卡住了一个问题。在prestashop 1.4.7中,我使用setcookie创建了一个自定义cookie变量,但是当我尝试访问并在前端控制器上分配它时,我没有获得cookie设置值。 这是我的剧本:
页面:checkpostcode.php
include(dirname(__FILE__).'/config/config.inc.php');
include(dirname(__FILE__).'/init.php');
global $cookie;
setcookie("is_postcode_checked", 1, time()+600, "/", "", 1); // Set the cookie in basepath
在frontcontroller.php页面上:
我使用$_COOKIE
访问它并将其分配给smarty数组。
'is_postcode_checked' => $_COOKIE['is_postcode_checked'] // Getting null value for cookie
页面:checkpostcode.tpl
{$cookie->_get(postcode_checked_msg)} // here get the is_postcode_checked value but
但我无法获得is_postcode_checked
变量值。
答案 0 :(得分:9)
在prestashop 1.5中,不推荐使用全局。
在Cookie中设置内容:
在控制器中:
$this->context->cookie->__set($key,$value);
其他档案:
$context = Context::getContext();
$context->cookie->__set($finger_print,$result);
您可以通过以下方式访问您的价值:
在控制器中
$this->context->cookie->key
其他档案:
$context = Context::getContext();
$context->cookie->key;
答案 1 :(得分:2)
您应该完全使用Prestashop自己的cookie类,而不是使用PHP setcookie()
函数。该课程使用“魔术方法”__get()
,__set()
,__unset()
和__isset()
,这样您就可以轻松完成此操作。
尝试使用“页面”代码(不确定如何执行此代码,因为它不像其他页面控制器):
global $cookie;
$cookie->is_postcode_checked = 1;
$cookie->write(); // I think you'll need this as it doesn't automatically save
...
在你的FrontController覆盖中:
global $cookie;
if (isset($cookie->is_postcode_checked))
$is_postcode_checked = $cookie->is_postcode_checked;
else
$is_postcode_checked = 0;
您可以将变量$ is_postcode_checked分配给相应的smarty变量,以便在模板中使用。
答案 2 :(得分:2)
如果你想从Prestashop cookie类中获取cookie,你也应该将它存储在这个类中。
在控制器中使用die()
功能,找出该Cookie集
正如Paul所说,最好只使用全局$cookie
类来存储和获取数据。