zend 框架显示/处理表单使用相同的动作/视图?
Posted
技术标签:
【中文标题】zend 框架显示/处理表单使用相同的动作/视图?【英文标题】:zend framework display/process form using same action/view? 【发布时间】:2011-05-22 11:35:25 【问题描述】:使用 MVC 架构(Zend 框架),您应该使用带有 if 语句的单个视图来显示/处理表单,还是使用多个视图(即一个视图显示表单,一个视图显示结果)。
在这种情况下,我正在尝试制作一个类似于 google 的搜索引擎。显示搜索结果时,页面布局将发生根本性变化。
例如;控制器:
public function indexAction()
if (!$this->getRequest()->isPost())
// display form
else
if ($this->_request->isPost())
if (!$form->isValid($formData))
// re-display form with errors
else
// process form and;
// display result using same action/view?
// display result using same action but use a different view?
使用相同的视图:
<?php if(isset($this->form)) : ?>
<!-- show form -->
<?php else: ?>
<!-- show result -->
<?php endif; ?>
希望这是有道理的。
【问题讨论】:
投票结束不是一个真正的问题。您已经考虑了问题,并且拥有所有工具来做出适合您需求的决定。您只是试图将决定委托给 SO 用户,这是行不通的,因为一个人会说一件事,而另一个人会说另一件事。以您认为最好的方式进行,如果结果不是最佳解决方案,请重构。 @markus,我认为这里的回答并不简单,但可能。它还包括如果。可能这个问题应该移到programmers.SE @markus “您应该使用带有 if 语句的单个视图来显示/处理表单还是多个视图”。尽管缺少标点符号,但这对我来说听起来像是个问题!感谢那些提供答案的人,不同的观点似乎是前进的方向。 【参考方案1】:不要陷入旧的单一编码风格,即一大块代码为一个输出页面完成所有工作。 MVC 的全部意义在于责任分离。将视图视为单个输出的模板,无论它出现在哪个页面/网址上。表单是一个输出。搜索结果是另一个。使用两个视图。
【讨论】:
【参考方案2】:更少的 if-s - 更少的错误。我建议您在这里使用更多不同的视图,可以重复使用一种表单。
【讨论】:
以上是关于zend 框架显示/处理表单使用相同的动作/视图?的主要内容,如果未能解决你的问题,请参考以下文章
ASP.net MVC - 视图上的多个表单,每个调用不同的操作,但需要再次显示相同的视图