我用的分配是这样的:智者 - 错误分配
$smarty->assign("akakak", $_POST[do]);
它在某些情况下工作,但它不是在某些情况下
,当我加这个参数工作
$smarty->assign("akakak", $_POST[do], true);
它总是工作
为什么?
我用的分配是这样的:智者 - 错误分配
$smarty->assign("akakak", $_POST[do]);
它在某些情况下工作,但它不是在某些情况下
,当我加这个参数工作
$smarty->assign("akakak", $_POST[do], true);
它总是工作
为什么?
您应该检查或设置默认值:
<?php
//Check it or set default for $do
$do=(isset($_POST['do']))?$_POST['do']:'';
//Assign the $smarty var with $do
$smarty->assign("akakak", $do);
?>
分配超全局变量的值($ _GET,$ _ POST,$ _REQUEST,$ _SESSION,$ _COOKIE,$ _ SERVER,$ _ENV)是多余的。您可以通过{$smarty}变量访问模板中的任何一个,在您的案例中为{$smarty.post.do}
。
以下为Smarty3为真:
的第三个参数assign()就是非缓存标志。欲了解更多信息,请参阅cacheability of variables。如果这真的解决了你的问题,你的真正问题在于你的缓存。您可能设置了$smarty->caching = true;
,在这种情况下,模板不会在每次调用时呈现,但可能时会从缓存中读取。
如果您需要进一步的帮助,您可能需要详细说明失败的案例。
除此之外,请在有其他意见建议$_POST['do']
在$_POST[do]
的密切关注和使用isset()
或empty()
适用。
在分配之前,如果if isset($ _ POST ['do'])'是否先检查?将引号放在'do'周围,因为你迫使PHP将一个常量解释为一个字符串数组键。 – 2012-02-22 17:32:10
是的,我为它 – 2012-02-22 17:33:03
'的error_reporting检查(E_ALL)'是你的朋友......你应该使用'$ _ POST [ '做']''没有$ _ POST [做]' – 2012-02-22 17:33:08