聪明 - 分配错误

时间:2012-02-22 17:27:07

标签: php smarty

我使用这样的分配:

$smarty->assign("akakak", $_POST[do]);
在某些情况下它起作用但在某些情况下它不起作用

添加此参数时

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

它始终有效

为什么?

2 个答案:

答案 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()