2013-07-27 68 views
0

我可能會比實際上更難,但...我的錯誤,沒有結果!在提交表單之前顯示。有沒有在Smarty模板中檢查服務器回傳的方法?Smarty模板{foreachelse}回發如果語句排除故障

{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); 
} 

回答

0

您可以檢查後數據直接與{$smarty.post.postback}一個值,該值相當於PHP suberglobal $_POST['postback']。但是,the Smarty documentation page for this feature說:

儘管Smarty提供了爲了方便而直接訪問PHP超級全局變量,但應謹慎使用它。直接訪問超級全局變量將底層應用程序代碼結構與模板混合在一起。一個好的做法是爲模板變量賦值特定的值。

就你而言,你大概是在某處PHP代碼中處理「回發」(即表單提交),然後將處理結果傳遞給Smarty進行顯示。 PHP代碼應該確定是否發生了表單提交,並驗證提交的輸入(例如,該字段是空白的,還是僅僅搜索沒有返回結果的內容?)。然後,該驗證的結果可以作爲額外變量傳遞給Smarty模板,並用於確定需要顯示哪些消息。