Zend Framework отображать / обрабатывать форму, используя то же действие / представление? - PullRequest
0 голосов
/ 22 мая 2011

Используя архитектуру 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; ?>

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

Ответы [ 2 ]

1 голос
/ 22 мая 2011

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

0 голосов
/ 22 мая 2011

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

...