【问题标题】:zend framework display/process form using same action/view?zend 框架显示/处理表单使用相同的动作/视图?
【发布时间】: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 语句的单个视图来显示/处理表单还是多个视图”。尽管缺少标点符号,但这对我来说听起来像是个问题!感谢那些提供答案的人,不同的观点似乎是前进的方向。

标签: model-view-controller zend-framework views zend-form


【解决方案1】:

不要陷入旧的单一编码风格,即一大块代码为一个输出页面完成所有工作。 MVC 的全部意义在于责任分离。将视图视为单个输出的模板,无论它出现在哪个页面/网址上。表单是一个输出。搜索结果是另一个。使用两个视图。

【讨论】:

    【解决方案2】:

    更少的 if-s - 更少的错误。我建议您在这里使用更多不同的视图,可以重复使用一种表单。

    【讨论】:

      猜你喜欢
      • 2011-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多