2012-04-23 105 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; 

的 '關鍵' 不存在。你知道爲什麼嗎?