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



我可能会让这件事比实际情况更难,但。。。我的错误,没有结果!在提交我的表单之前显示。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);
}

您可以直接使用{$smarty.post.postback}检查post数据中的值,这相当于PHP子全局$_POST['postback']。然而,正如该功能的Smarty文档页面所说:

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

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

最新更新