0

我可能比实际更难,但是......我的错误,没有结果!在我的表单提交之前显示。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);
}
4

1 回答 1

0

您可以直接使用 来检查 post-data 中的值{$smarty.post.postback},这相当于 PHP suberglobal $_POST['postback']。但是,正如该功能的 Smarty 文档页面所说:

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

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

于 2013-07-27T22:08:10.230 回答