2012-04-23 110 views
1

Prestashop自定义Cookie变量+ Prestashop

我被卡住了,我们是一个cookie的问题。在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

​​

,但我没能获得is_postcode_checked变量的值。

回答

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变量以在您的模板中使用。

+0

我是否必须在php文件中实现第一个片段?我不能完全在tpl文件中完成它? – KingsInnerSoul 2013-07-02 05:57:19

+0

我不会推荐在.tpl文件中做这件事,但是你可以在技术上做tpl文件中的任何事情。 – justinl 2013-08-19 04:01:42

2

,如果你想获取从的Prestashop饼干类的饼干,你应该把它存放在这个类太

使用模具()在你的控制器,找出功能是设置cookie

它是更好的保罗说只使用全局变量$饼干类来存储和获取数据

,并请清洁你的问题就是你的解释进入到你的代码的一部分

9

在1.5的Prestashop很凌乱,全球已被弃用。

要设置的东西在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

,如果我做

$context = Context::getContext(); 
$context->cookie->key; 

的 '关键' 不存在。你知道为什么吗?