2011-10-06 154 views
2

我有幾個字段的zend窗體。Zend - 隱藏窗體並顯示消息

當表單驗證時,我想隱藏表單並顯示成功消息。

有很多方法可以做到這一點 - 重定向到另一個控制器動作,渲染另一個視圖腳本,在視圖助手/會話等標誌。

有沒有最佳做法呢?

謝謝。

回答

1

我覺得很多時候人們使用張貼如果窗體已經公佈,檢查和有效,然後將一條信息傳遞到視圖中的其他兩個答案的解決方案。

我認爲這種方法可以,但不是最優的。它將消息與工作流密切相關,並創建代碼重複的需求。這不是必需的。應將IMO消息傳遞從工作流中除去,並使用可重用組件進行處理。碰巧,Zend Framework爲我們提供了必要的工具,flashMessenger。

因此,我開始做的是向flashMessenger發送一條消息,無論何時我需要,它都會在下一次自動顯示之後自動顯示,與表單動作無關,並且不需要額外的標記和if語句。

例子和資源有關以FlashMessenger:

FlashMessenger效果最好通過這些鏈接找到的附加視圖助手!

+0

你能舉個例子嗎?我仍然需要隱藏表單。 – Ran

+0

只需在google上搜索:http://aaronsaray.com/blog/2011/06/14/easy-flash-messenger-messages-in-zend-framework/ – JellyBelly

+0

和本參考手冊ZF:http://framework.zend的.com /手動/ EN/zend.controller.actionhelpers.html – JellyBelly

1

這是我的方式:

在控制器中,當表單被提交爲全成,我設置

$this->view->success_msg = "Success."; 

,並在視圖文件我只是問:

<?php 
$success_msg = $this->success_msg; 
if(isset($success_msg)){ 
    echo $success_msg; 
}else{ 
    echo $form; 
} 
?> 
+0

我的觀點是,如果在視圖內部使用較少的內容,並且代碼更具可讀性, – JellyBelly

1

我想這個:

//into controller 
$form = new Form_Foo(); 
if ($this->getRequest()->isPost() && $form->isValid($_POST)) { 
    $this->view->message = "Post Successful!!!"; 
} else { 
    $this->view->form = $form; 
} 

//into view 
<?= $this->message ?> 
<?= $this->form ?> 
+0

@markus:出了什麼問題? – JellyBelly

+0

沒有什麼是錯的。我只是認爲,只要有可能,SO應該使用示例代碼,因爲很多人會看到它。對變量名稱使用縮寫不是模範,這是不好的做法。所以我將msg改成了更易讀的消息。 – markus

+0

好!謝謝你的提示! – JellyBelly