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

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

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

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

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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы