2012-02-22 2 views
0

я использую назначить так:умник - ошибка в Назначают

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

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

, когда я добавить этот параметр

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

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

Почему?

+0

Вы сначала проверяете, если 'if isset ($ _ POST ['do'])' перед назначением? Поместите цитаты вокруг 'do', так как вы вынуждаете PHP интерпретировать константу как строковый массив. –

+0

yes Я проверяю его –

+0

'error_reporting (E_ALL)' ваш друг ... вы должны использовать '$ _POST ['do']' not '$ _POST [do]' –

ответ

2

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

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

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

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

Ниже справедливо для Smarty3:

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

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

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

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