Zend Framework: класс контроллера == страница? - PullRequest
4 голосов
/ 30 ноября 2009

Правильно ли я считаю, что в Zend Framework, если я планирую разместить 5 страниц на своем сайте, мне обычно нужно 5 контроллеров? Разработчики ZF обычно создают 1 контроллер на страницу («страница» как единица приложения абстракции)?

Причина, по которой я спрашиваю это, состоит в том, что ранее по какой-то причине я вставлял множество различных действий в контроллеры, чтобы они играли роль страниц, например, индексировать / добавлять, индексировать / просматривать, индексировать / удалять и отображать различные маленькие экраны, например, небольшие экраны CRUD, а не сетки, отображаемые с помощью действия index.

Но на данный момент я хочу проверить мое новое понимание того, что действия необходимы в основном для обновления модели, и после запуска действия должны быть немедленно перенаправлены обратно в контроллер / индекс. Таким образом, кажется, что представления должны в основном использоваться в действиях индекса, а реже - в других действиях.

Это звучит архитектурно правильно?

Ответы [ 3 ]

3 голосов
/ 30 ноября 2009

Я полагаю, это один из способов сделать это ... Используя вашу аналогию, я полагаю, что я использую контроллер как "раздел" и действия, как "страницы" для этих разделов.

Но это больше застревает в старой процедурной || статической парадигме страниц, потому что на самом деле сам контроллер действий не имеет ничего общего со страницей или разделом, чем с ассоциацией, которую вы создаете как разработчик. То есть. каждая страница потенциально может представлять собой совокупность многочисленных действий и представлений, зависящих от архитектуры приложения.

Например, если у меня есть модули блога, у меня может быть следующее:

Контроллеры:

  • PostController
  • CommentController

Просмотров:

  • сообщение
    • дисплей (отображение одного сообщения)
    • список (список сообщений)
    • редактировать (создавать / редактировать пост)
  • комментарий
    • дисплей (отображение n комментариев)
    • список (список комментариев)
    • редактировать (создавать / редактировать / модерировать комментарии)
    • embed-list (для использования на самом посте, если он отличается от отображения)
2 голосов
/ 30 ноября 2009

По моему мнению, контроллер всегда должен группировать несколько методов, которые имеют общий вариант использования. Попробуйте найти «существительные», которые описывают функциональность вашего приложения: это контроллеры (а глаголы - методы контроллеров).

Если у вас есть (например) блог, у вас может быть:

  • ArticleListController (список всех статьи, перечисляющие топ-10, листинг все статьи для тега, ...)
  • SingleArticleController (отображение одной статьи, добавление комментариев, ...)
  • AdminController (позволяет писать статьи)

Если у вас есть только 5 страниц (например, дома, о, контакт, ...), архитектура MVC может не подходить.

1 голос
/ 30 ноября 2009

indexAction - это просто действие по умолчанию для данного контроллера, полезное для отображения представления по умолчанию (аналогично отображению страницы index.html или index.php для подкаталога).

Вполне допустимо создавать различные действия для каждого контроллера, каждый из которых может иметь или не иметь свои собственные представления (, т.е. добавлять и редактировать). Контроллер предназначен для группировки похожих действий.

Например, для использования, пожалуйста, обратитесь к документации по Zend_Controller_Action . Вам также может быть полезно ознакомиться с рабочим процессом Zend_Controller .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...