我有一些带有几个字段的表格。
当表单经过验证后,我想隐藏表单并显示成功消息。
有很多方法可以做到这一点 - 重定向到另一个控制器操作,渲染另一个视图脚本,在视图助手/会话中标记等等。
这有什么最好的做法吗?
感谢。
答案 0 :(得分:1)
这是我的方式:
在控制器中,当表单成功提交时,我设置了
$this->view->success_msg = "Success.";
在视图文件中我只想问:
<?php
$success_msg = $this->success_msg;
if(isset($success_msg)){
echo $success_msg;
}else{
echo $form;
}
?>
答案 1 :(得分: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 ?>
答案 2 :(得分:1)
我认为通常人们会使用另外两个答案中发布的解决方案来检查表单是否已发布且有效,然后将消息传递给视图。
我认为这种方法还可以,但不是最优的。它将消息紧密地绑定到工作流中,并创建了对代码重复的需求。这不是必需的。应该从工作流程中取出IMO消息传递,并使用可重用的组件进行处理。碰巧,Zend Framework为我们提供了必要的工具,flashMessenger。
所以,我开始做的是向flashMessenger发送消息,每当我需要它时,它将自动显示在下一个往返之后,独立于表单操作,并且不需要额外的标记和if语句。< / p>
有关flashMessenger的示例和资源:
FlashMessenger最适合通过这些链接找到的附加视图助手!