smarty - ошибка в назначении - PullRequest
0 голосов
/ 22 февраля 2012

Я использую назначение следующим образом:

$smarty->assign("akakak", $_POST[do]);

это работает в некоторых случаях, но не работает в некоторых случаях

когда я добавляю этот параметр

$smarty->assign("akakak", $_POST[do], true);

это всегда работа

Почему?

Ответы [ 2 ]

2 голосов
/ 22 февраля 2012

Присваивание значений суперглобалам ($ _GET, $ _POST, $ _REQUEST, $ _SESSION, $ _COOKIE, $ _SERVER, $ _ENV) является излишним. Вы можете получить доступ к любому из них в шаблоне через переменную {$ smarty} , в вашем случае {$smarty.post.do}.

Для Smarty3 верно следующее:

Третий аргумент assign () - это флаг nocache. Для получения дополнительной информации см. кэшируемость переменных . Если это действительно решило вашу проблему, ваша настоящая проблема заключается в кэшировании. Скорее всего, вы установили $smarty->caching = true;, и в этом случае шаблон отображается не при каждом вызове, а по возможности читается из кэша.

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

Помимо этого, пожалуйста, внимательно посмотрите на другие комментарии, предлагающие $_POST['do'] над $_POST[do] и использование isset() или empty(), где применимо.

2 голосов
/ 22 февраля 2012

Вы должны проверить или установить значение по умолчанию:

<?php 
//Check it or set default for $do
$do=(isset($_POST['do']))?$_POST['do']:'';

//Assign the $smarty var with $do
$smarty->assign("akakak", $do);
?>
...