我有幾個字段的zend窗體。Zend - 隱藏窗體並顯示消息
當表單驗證時,我想隱藏表單並顯示成功消息。
有很多方法可以做到這一點 - 重定向到另一個控制器動作,渲染另一個視圖腳本,在視圖助手/會話等標誌。
有沒有最佳做法呢?
謝謝。
我有幾個字段的zend窗體。Zend - 隱藏窗體並顯示消息
當表單驗證時,我想隱藏表單並顯示成功消息。
有很多方法可以做到這一點 - 重定向到另一個控制器動作,渲染另一個視圖腳本,在視圖助手/會話等標誌。
有沒有最佳做法呢?
謝謝。
我覺得很多時候人們使用張貼如果窗體已經公佈,檢查和有效,然後將一條信息傳遞到視圖中的其他兩個答案的解決方案。
我認爲這種方法可以,但不是最優的。它將消息與工作流密切相關,並創建代碼重複的需求。這不是必需的。應將IMO消息傳遞從工作流中除去,並使用可重用組件進行處理。碰巧,Zend Framework爲我們提供了必要的工具,flashMessenger。
因此,我開始做的是向flashMessenger發送一條消息,無論何時我需要,它都會在下一次自動顯示之後自動顯示,與表單動作無關,並且不需要額外的標記和if語句。
例子和資源有關以FlashMessenger:
FlashMessenger效果最好通過這些鏈接找到的附加視圖助手!
這是我的方式:
在控制器中,當表單被提交爲全成,我設置
$this->view->success_msg = "Success.";
,並在視圖文件我只是問:
<?php
$success_msg = $this->success_msg;
if(isset($success_msg)){
echo $success_msg;
}else{
echo $form;
}
?>
我的觀點是,如果在視圖內部使用較少的內容,並且代碼更具可讀性, – JellyBelly
我想這個:
//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 ?>
@markus:出了什麼問題? – JellyBelly
沒有什麼是錯的。我只是認爲,只要有可能,SO應該使用示例代碼,因爲很多人會看到它。對變量名稱使用縮寫不是模範,這是不好的做法。所以我將msg改成了更易讀的消息。 – markus
好!謝謝你的提示! – JellyBelly
你能舉個例子嗎?我仍然需要隱藏表單。 – Ran
只需在google上搜索:http://aaronsaray.com/blog/2011/06/14/easy-flash-messenger-messages-in-zend-framework/ – JellyBelly
和本參考手冊ZF:http://framework.zend的.com /手動/ EN/zend.controller.actionhelpers.html – JellyBelly