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 - 视图上的多个表单,每个调用不同的操作,但需要再次显示相同的视图

如何通过按 Enter 使用 Dojo 和 XHR 发送 Zend 表单

检索 Zend 框架中的子表单元素?

Zend Framework - 改变动作输出的顺序

Zend框架2动作助手?

PHP Zend框架:Zend查看动作助手