我有几个字段的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