我使用这样的分配:
$smarty->assign("akakak", $_POST[do]);
在某些情况下它起作用但在某些情况下它不起作用
添加此参数时
$smarty->assign("akakak", $_POST[do], true);
它始终有效
为什么?
答案 0 :(得分: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);
?>
答案 1 :(得分: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()
。