Присваивание значений суперглобалам ($ _GET, $ _POST, $ _REQUEST, $ _SESSION, $ _COOKIE, $ _SERVER, $ _ENV) является излишним. Вы можете получить доступ к любому из них в шаблоне через переменную {$ smarty} , в вашем случае {$smarty.post.do}
.
Для Smarty3 верно следующее:
Третий аргумент assign () - это флаг nocache. Для получения дополнительной информации см. кэшируемость переменных . Если это действительно решило вашу проблему, ваша настоящая проблема заключается в кэшировании. Скорее всего, вы установили $smarty->caching = true;
, и в этом случае шаблон отображается не при каждом вызове, а по возможности читается из кэша.
Если вам нужна дополнительная помощь, вы можете подробнее рассказать о случаях, когда это не получалось.
Помимо этого, пожалуйста, внимательно посмотрите на другие комментарии, предлагающие $_POST['do']
над $_POST[do]
и использование isset()
или empty()
, где применимо.