Как установить Cookie в шаблоне smarty с php? - PullRequest
1 голос
/ 19 ноября 2011

В настоящее время у меня есть проблема с установкой файла cookie в блоке кода php, который находится в классе шаблонов .tpl smarty.

В классе .tpl у меня есть что-то вроде:

{php}
    setcookie("school", "test");
{/php}

School: { $smarty.cookies.school }

Однако это ничего не распечатывает.Я знаю, что вызов php setcookie работает, когда он находится только в файле .php, поскольку я это проверял, но не могу заставить его работать с фрагментом кода php в классе .tpl.

Любые советы приветствуются, D

Ответы [ 2 ]

5 голосов
/ 19 ноября 2011
{php}
    setcookie("school", "test");
    $_COOKIE['school'] = 'test';
{/php}

Это потому, что $ _COOKIE superglobal обновляется только при обновлении страницы, а не после использования setcookie()

Убедитесь, что вы используете SmartyBC.class.php, а не Smarty.class.php, потому что {php}{/php} не будет работать с использованиемSmarty.class.php.

Также не забудьте установить для свойства $php_handling значение SMARTY_PHP_ALLOW.

Подробнее http://www.smarty.net/docsv2/en/variable.php.handling.tpl

1 голос
/ 21 ноября 2011

Вместо того, чтобы вставлять встроенный php-код в мой шаблон, я создал умный плагин настраиваемой функции, который при вызове позволяет мне устанавливать куки.

Подробная информация о пользовательских функциях: http://www.smarty.net/docsv2/en/plugins.functions.tpl Питер указал мне наидея сделать это.

Однако мне все еще немного любопытно, как это можно сделать на встроенном php в коде шаблона, даже если это не рекомендуется в качестве хорошей практики.

...