2012-02-22 58 views
0

我用的分配是这样的:智者 - 错误分配

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

它在某些情况下工作,但它不是在某些情况下

,当我加这个参数工作

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

它总是工作

为什么?

+0

在分配之前,如果if isset($ _ POST ['do'])'是否先检查?将引号放在'do'周围,因为你迫使PHP将一个常量解释为一个字符串数组键。 – 2012-02-22 17:32:10

+0

是的,我为它 – 2012-02-22 17:33:03

+0

'的error_reporting检查(E_ALL)'是你的朋友......你应该使用'$ _ POST [ '做']''没有$ _ POST [做]' – 2012-02-22 17:33:08

回答

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()就是非缓存标志。欲了解更多信息,请参阅cacheability of variables。如果这真的解决了你的问题,你的真正问题在于你的缓存。您可能设置了$smarty->caching = true;,在这种情况下,模板不会在每次调用时呈现,但可能时会从缓存中读取。

如果您需要进一步的帮助,您可能需要详细说明失败的案例。

除此之外,请在有其他意见建议$_POST['do']$_POST[do]的密切关注和使用isset()empty()适用。