2

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

4

3 回答 3

11

在 prestashop 1.5 中,不推荐使用 global。

在 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;
于 2013-10-01T08:19:24.410 回答
3

您应该完全使用 Prestashop 自己的 cookie 类而不是使用 PHPsetcookie()函数。该类使用“魔术方法” __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 变量以在模板中使用。

于 2012-04-24T15:00:48.797 回答
3

如果你想从 Prestashop cookie 类中获取 cookie,你也应该将它存储在这个类中。

在你的控制器中使用die()函数,找出那个 cookie 集

正如保罗所说,最好只使用全局$cookie类来存储和获取数据。

于 2012-12-31T15:39:12.270 回答