2011-05-22 40 views
0

使用MVC架构(Zend Framework),您应该使用单个视图和if语句来显示/处理表单或多个视图(即一个视图显示表单,一个显示结果)。zend框架显示/进程形式使用相同的动作/视图?

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

例如;控制器:

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

希望是有道理的。

+0

投票结束不是一个真正的问题。你已经考虑过这个问题,并且你有所有的工具来做出适合你需求的决定。你只是试图将决定委托给SO用户,这是行不通的,因为一方会说一件事,另一件事则说。如果事实证明这是一个次优解决方案,重构,那么以你认为最好的方式进行。 – markus 2011-05-22 11:40:07

+0

@markus,我想这里的回答并不简单,但可能。这也包括如果。可能是这个问题应该被移动到程序员.S – gaRex 2011-05-22 13:17:04

+0

@markus“你应该用if语句来显示/处理一个表单还是多个视图”。虽然错过了标点符号,但这听起来像是一个问题!感谢那些提供了答案的人,单独的观点似乎是前进的方向。 – 2011-06-18 12:48:12

回答

1

不要陷入老式的单一编码风格,其中一大块代码为一个输出页面做所有事情。 MVC的全部内容是如此分离的责任。无论显示哪个页面/网址,都可以将视图看作单个输出的模板。表格是一个输出。搜索结果是另一个。使用两个视图。

0

没有问题的bug。我建议你在这里使用更多不同的视图,这可以重用一种形式。