Потеря знаний при использовании HMVC (Kohana) - PullRequest
2 голосов
/ 20 февраля 2012

У меня есть вопросы, касающиеся модели HMVC от Kohana.Мне очень нравится идея разделения вещей как компонентов в рамках одних и тех же принципов (MVC) для масштабирования и упрощения создания API.

Хотя у меня есть некоторые недостатки, такие как потеря знаний.

Например, у меня могут быть компоненты, называемые news и category .Кроме того, контроллеры сайта просто делегируют полный запрос и собирают все html / данные для шаблонов сайта через эти компоненты.

          Site controller
           /             \
          /               \
   categories              news

Когда мне нужны все категории для боковой панели, я могу вызвать:/ категории / список.Когда я хочу новость, я могу позвонить / новости / ID.Оба возвращают html.

Если у меня есть контроллер сайта newsreadon, основной задачей которого является показ новостной статьи, этот контроллер получит все категории для боковой панели.Затем он будет извлекать новость.

                Newsreadon
               /          \
              /            \
 categories/list (html)    news/<id>   (html)

Когда я отображаю все элементы в шаблоне сайта, я хочу знать «заголовок» новостей для тега заголовка html, но я не могу знать, потому чтоЯ возвращаю html.

Мне кажется, что есть несколько решений:

  1. Сохранение заголовка в каком-то реестре (но это теряется, если я масштабирую компонент на другом сервере и использую HTTP),Так что с точки зрения масштабирования, нет хорошего выбора.
  2. Вернуть json с полями title и html.
  3. Считайте некоторую часть html, например, h2, для заголовка

Решение 2 кажется наименее неприятным и поддерживает связь без гражданства в такте.

Мне действительно интересно, как вы решили бы это элегантным способом?Я пропускаю «решение»?

РЕДАКТИРОВАТЬ: Интересно читать, чтобы понять HMVC от Кохана: http://techportal.inviqa.com/2010/02/22/scaling-web-applications-with-hmvc/

Ответы [ 2 ]

0 голосов
/ 20 февраля 2012

Если у меня есть контроллер сайта newsreadon, основной задачей которого является показ новостная статья ...

Если целью этих контроллеров является отображение новостной статьи, то я не понимаю необходимости в дополнительном контроллере. Рассмотрите возможность изменения дизайна вашего приложения, возможно, Newsreadon расширяет контроллер для отображения новостной статьи.

0 голосов
/ 20 февраля 2012

Поскольку вы отображаете новости, используя news/<id>, предположительно, родительский контроллер знает идентификатор новости.Исходя из этого, просто получите заголовок новости от вашей модели.Это был бы правильный способ сделать это.Попытка извлечь некоторые данные из подзапросов сделает ваше приложение более тесно связанным и более сложным для поддержки в долгосрочной перспективе.

...