2012-04-23 4 views
1

PrestashopПользовательская переменная cookie + Prestashop

Я застрял у нас одна проблема для печенья. В prestashop 1.4.7 я создаю настраиваемую переменную cookie с помощью setcookie, но когда я пытаюсь получить доступ и назначить его на фронт-контроллере, я не получаю установленное значение 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 значение переменной.

ответ

2

Вы должны использовать собственный класс cookie Prestashop, а не использовать функцию PHP setcookie(). Класс использует «магические методы» __get(), __set(), __unset() и __isset(), что должно позволить вам сделать это легко.

Try в вашей «странице» коде (не знает, как вы это исполнение, поскольку он Безразлично, т выглядеть как дополнительный контроллер страницы):

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

+0

Я бы не рекомендовал делать это в файле .tpl, но вы можете технически сделать почти что угодно в tpl-файле. – justinl

2

, если вы хотите, чтобы принести печенье из Prestashop класса печенья вы должны хранить его в этом классе тоже

использование штампа() функция в контроллере, чтобы выяснить, что печенье набор

это лучше, Павел сказал использовать только глобальный класс $ куков для хранения и получения данных

и, пожалуйста, очистить свой вопрос, который очень неаккуратно ваше объяснение зачисляется на ваш код часть

9

в PrestaShop 1.5, глобальные устарел.

Чтобы установить что-то в куки:

В контроллере:

$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; 

'ключ' не существует. Вы знаете, почему?

Смежные вопросы