Smarty Template {foreachelse}回发if语句疑难解答

时间:2013-07-27 20:51:28

标签: php variables if-statement smarty postback

我可能比现实更难,但......我的错误,没有结果!在我的表单提交之前显示。 Smarty模板中是否有办法检查服务器的回发?

{foreach from=$book item=row}
{$row.DESCRIPTION}
{foreachelse}
{if ($postback) == "thisvalue"}
Error, no results!
{/if}
{/foreach}

我在我的表单上尝试了这个(也没用):

<input type="hidden" type="text" name="postback" value='thisvalue'>

if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$postback = $_POST['postback'];
$tpl->assign("postback", $postback);
}

1 个答案:

答案 0 :(得分:0)

您可以使用{$smarty.post.postback}直接检查后期数据中的值,这相当于PHP suberglobal $_POST['postback']。但是,正如the Smarty documentation page for this feature所说:

  

虽然为方便起见,Smarty提供了对PHP超级全局变量的直接访问,但应谨慎使用。直接访问超级全局变量将底层应用程序代码结构与模板混合在一起。一个好的做法是为模板变量分配特定的需要值。

在您的情况下,您可能会在某处的某些PHP代码中处理“回发”(即表单提交),然后将该处理的结果传递给Smarty进行显示。 PHP代码应该确定表单提交是否已经发生,并验证提交的输入(例如,该字段是否为空白,或者他们只是搜索没有返回结果的内容?)。然后,该验证的结果可以作为额外变量传递给Smarty模板,并用于确定需要显示哪些消息。