Модель-Вид-Контроллер

Система Joomla! обширно использует шаблоны проектирования [в архитектуре] Модель-Вид-Контроллер.

Как только [система] Joomla! начала обработку какого-либо запроса какого-либо пользователя, такого как [запрос] GET для некоторой определенной страницы, или [запрос] POST содержащихся в какой-либо форме данных, одним из первых проводимых [системой] Joomla! действий является анализ URL ссылки для определения, какой компонент будет ответственен за обработку данного запроса и передача управления этому тому компоненту.

Если этот компонент был спроектирован [согласно схемы] MVC, то он передаст управление конкретному контроллеру. Этот контроллер отвечает за анализ данного запроса и определения какая модель/какие модели будут нужны для удовлетворения этого запроса и какая модель/какие модели должны быть использованы для возвращение результатов обратно данному пользователю.

Та модель/те модели инкапсулируют эти данные, используемые данным компонентом. В большинстве случаев эти данные будут поступать из базы данных, - либо [самой системы] Joomla!, либо какой-либо внешеней, но также возможно, что данная модель обретет данные из других источников, таких как работающий на другом сервере [интерфейс] API. В подходящих случаях, эта модель также отвечает за обновление базы данных. Цель этой модели - изолировать данный контролер и вид от подробных данных, [относящихся] к тому, как эти данные были получены или изменены.

Этот вид отвечает за генерацию вывода данных, отправляемых данным компонентом на веб-браузер. Он запрашивает у данной модели любые необходимые данные и форматирует их соответственным образом. Например, какой-либо список извлеченных из данной модели объектов данных может быть заключен данным видом в [код] таблицы в HTML.

Поскольку Joomla! спроектирована быть существенно модулярной [системой], выведенные данным компонентом на веб-страницу данные являются только частью всей полной веб-страницы, [показанной в заключение] пользователю. Как только данный вид сгенерировал вывод данных, данный компонент передает контроль обратно фреймворку [системы] Joomla, которая затем загружает и испольняет [код] шаблона. Данный шаблон объединяет выводимые данные этого компонента и любых других активных на данной веб-странице модулей, с тем что бы они [(эти выводимые данные)] были доставлены на веб-браузер как некая отдельная веб-страница.

Для того, чтобы предоставить веб-дизайнерам, которых может интересовать только новый дизайн, а не манипулирование находящимся под [дизайном] кодом, больше мощи и гибкости, [система] Joomla! разделяет традиционный вид на вид и макет. Сам вид вытягивает данные из данной модели, как в традиционном шаблоне проектирования MVC, но затем просто делает эти данные доступными данному макету, который отвечает за форматирование этих данных для [их] представления конкретному пользователю. Преимущество этого разделения в том, что система шаблонов Joomla предоставляет некий простой механизм для переопределения макетов в шаблоне. Эти переопределения макета (часто называемые "переопределение шаблона", поскольку они формируют часть конкретного шаблона, хотя [то] что фактически переопределяется - это данный макет) входят в состав шаблона и предоставляют дизайнеру данного шаблона полный контроль над всеми данными, выводимыми ядром Joomla! и любыми совместимыми со [схемой] шаблонного проектирования MVC установленными сторонними расширениями.

в 24:02:2017 Joomla! Ukraine Editor
Был ли ответ полезен?