使用相同的动作/视图的zend框架显示/进程表单?

时间:2011-05-22 11:35:25

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

使用MVC架构(Zend Framework),您应该使用带有if语句的单个视图来显示/处理表单,还是使用多个视图(即一个视图显示表单,一个视图显示结果)。

在这种情况下,我正在尝试制作类似谷歌的搜索引擎。显示搜索结果时,页面布局将发生根本性变化。

例如;控制器:

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; ?>

希望这是有道理的。

2 个答案:

答案 0 :(得分:1)

不要陷入旧的整体编码风格,其中一大块代码为一个输出页面执行所有操作。 MVC的重点是如此独立的责任。将视图视为单个输出的模板,无论它出现在哪个页面/网址上。表单是一个输出。搜索结果是另一个。使用两个视图。

答案 1 :(得分:0)

减少if-s - 减少错误。我建议你在这里使用更多不同的观点,可以重用一种形式。