Shiz
@Shiz
Менеджер, программист, прототипировщик

Постоянное содержимое в MVC-веб-фреймворках?

Предположим у нас есть сайт работающий на одном из MVC-фреймворков. На сайте достаточно много сущностей и страниц. Но на страницах всегда показывается боковая колонка с блоком выводящим случайные картинки с сайта.

Вопрос заключается в следующем, согласно парадигме MVC, данные должны вытягиваться из модели в контроллере и передаваться в представление, следует ли в этом случае поступить также?

Или же стоит данные получать именно там где они используются, минуя контроллер?
  • Вопрос задан
  • 2471 просмотр
Пригласить эксперта
Ответы на вопрос 6
notRly
@notRly
Один из вариантов реалзации — использовать логику виджетов. Т.е. иметь подключаемую библиотеку, которая реализует MVC уже в себе.

Второй вариант — использовать более сложный рендер, чем предлагает фреймворк. В рендере уже описывать логику вывода сайдбаров и вообще собирать шаблон страницы из отдельных частей.
Ответ написан
Если хочется соблюсти архитектурную чистоту, то, наверное, стоит присмотреться к PAC/HMVC
Ответ написан
taliban
@taliban
php программист
Кто Вам сказал такую глупость что модели должны отдавать данные _только_ через контроллер? В зенде, например, есть модели которые работают минуя контроллер, и называются они вью-хелперы. Те же вышеуказанные плагины тоже по сути своей являются моделями.
Ответ написан
Комментировать
@mayorovp
Контроллер — это не почтальон, передающий данные от модели к представлению, а самостоятельный компонент, реализующий бизнес-процессы.

Если с отображением некоторого блока не связано ни одного бизнес-процесса, то контроллер ему вообще не нужен.
Ответ написан
metamorph
@metamorph
Если сайдбар показывается везде — можно воткнуть свой базовый контроллер между базовым контроллером фреймворка и рабочим контроллером.

И вот там уже добывать содержимое сайдбара.

Ну, если фреймворк такое позволяет, вестимо.
Ответ написан
Комментировать
Stdit
@Stdit
Если это действительно случайные картинки, можно например их включать через SSI на стороне вебсервера.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы