#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-ов — меньше ошибок. Я предлагаю вам использовать здесь больше разных представлений, которые могут повторно использовать одну форму.