отображение формы zend framework / процесса с использованием того же действия / представления?

#model-view-controller #zend-framework #views #zend-form

#модель-представление-контроллер #zend-framework #Вид #zend-form

Вопрос:

Используя архитектуру MVC (Zend Framework), следует ли использовать одно представление с инструкциями 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; ?>
  

Надеюсь, это имеет смысл.

Комментарии:

1. Голосование за закрытие как ненастоящий вопрос. Вы подумали о проблеме, и у вас есть все инструменты для принятия решения, соответствующего вашим потребностям. Вы просто пытаетесь делегировать решение пользователям SO, что не сработает, потому что один скажет одно, а другой другое. Сделайте это так, как вы считаете лучшим, если это окажется неоптимальным решением, рефакторинг.

2. @markus, я думаю, что ответ здесь не простой, но возможный. Это также включает if. Возможно, этот вопрос следует перенести в programmers.SE

3. @markus «Должны ли вы использовать одно представление с инструкциями if для отображения / обработки формы или несколько представлений». Несмотря на отсутствие знаков препинания, для меня это звучит как вопрос! Благодаря тем, кто предоставил ответы, кажется, что отдельные представления — это путь вперед.

Ответ №1:

Не увлекайтесь старым монолитным стилем кодирования, когда один кусок кода делает все для одной выходной страницы. Весь смысл MVC заключается в такой отдельной ответственности. Думайте о представлении как о шаблоне для отдельной части выходных данных, независимо от того, на какой странице / URL она отображается. Форма — это одна часть выходных данных. Результаты поиска — это другое. Использовать два представления.

Ответ №2:

Меньше if-ов — меньше ошибок. Я предлагаю вам использовать здесь больше разных представлений, которые могут повторно использовать одну форму.