自定义Cookie变量+ Prestashop

时间:2012-04-23 14:15:25

标签: prestashop

的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变量值。

3 个答案:

答案 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类来存储和获取数据。