RSS   Twitter   Copiny   Copiny
Нашел ошибку? 

Выдели фрагмент текста с ошибкой или неточностью и нажми Ctrl+Enter!

Введение в Модель-Вид-Контролер (MVC) Joomla

Joomla — это один из фреймворков, который широко использует паттерн MVC (Модель-Вид-Контролер). Model-View-Controller — архитектура программного обеспечения, в которой модель данных приложения, пользовательский интерфейс и управляющая логика разделены на три отдельных части, так, что модификация одной из них оказывает минимальное воздействие на другие.

После того как посетитель сайта зашел на определенную ссылку на сайте, Joomla обрабатывает запрос и выясняет какую страницу запрашивает человек, определяет компонент который будет загружаться и обрабатывать все пришедшие переменные $_GET и $_POST ($_SESSION, $_COOKIE и другие — это уже обрабатывается в компоненте).

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

Модель (Model) работает с данными, которые необходимы компоненту, а именно выбирает, сохраняет, обновляет, удаляет и прочее… В большинстве случаев эти данные выбираются из базы данных сайта, но так же можно использовать в виде хранилища какие-либо веб-сервисы с других серверов, например RSS. Цель модели — изолировать контролер и вид от деталей того, как были собраны и изменены и хранятся данные компонента.

Вид или представление (View) отвечает за генерацию выходного кода, внешний вид. Часто это место называют «шаблоном» сайта. Он вызывает Модель и запрашивает у неё определенные данные. Модель собирает всю необходимую информацию и отдает её Виду, который отправляет ее пользователю в виде HTML (т.е вместе с дизайном, картинками, стилями…). При этом HTML-код — это только один из многочисленных вариантов. Легко можно сделать результатом работы компонента json, pdf, чистый текст, файл… При этом изменения коснутся только Вида.

Чтобы обеспечить дополнительную гибкость и мощность в шаблонах, упростить жизнь разработчика, для Вида предусмотрено разбиение на дополнительные уровни («layout»). Так, одному виду может принадлежать несколько уровней. Например, для Вида «Форма» есть уровни «Форма», «Сообщение», «Ошибка отправления». Или такой пример: Вид списка категорий может иметь совершенно различный код HTML, но при этом данные отображаются одни и те же, т.е модель одна и та же. Для этого мы создаем различные уровни Вида.

Имея весь этот «арсенал», разработчик может создавать мощные и гибкие приложения, которые в будущем легко расширить. При этом, для того чтобы изменить логику программы, нужно изменить только Контролер, для изменения места хранения и способа обработки информации — изменить только Модель, а изменив Вид, меняется внешний вид компонента, который собственно и видит пользователь.

Смотрите также:
Комментарии (5) Добавить комментарий
  • Дмитрий
    Дмитрий
    21 Марта 2013, 16:33
     ↑  +7  ↓     ответ

    В статье хотелось бы видеть именно реализацию MVC в Joomla, а не общие фразы про MVC который ты вытянул с википедии. Как MVC реализован в Joomla где лежит контроллер, где модель, где вьюха???

  • tinyurl.com
    tinyurl.com
    24 Ноября 2019, 03:30
     ↑  0  ↓     ответ

    Heya i am for the first time here. I found this board and

    I find It really useful & it helped me out a lot.

    I hope to give something back and aid others like you aided me.

  • tinyurl.com
    tinyurl.com
    25 Ноября 2019, 08:34
     ↑  0  ↓     ответ

    Thanks for some other informative blog.

    The place else could I get that type of info written in such a perfect method?

    I've a project that I'm just now operating

    on, and I've been at the glance out for such information.

  • this coconut oil
    this coconut oil
    25 Ноября 2019, 12:45
     ↑  0  ↓     ответ

    I was able to find good information from your blog posts.

  • plenty of fish dating site
    plenty of fish dating site
    26 Ноября 2019, 21:17
     ↑  0  ↓     ответ

    Howdy would you mind sharing which blog platform you're working with?

    I'm planning to start my own blog soon but I'm having a tough time deciding

    between BlogEngine/Wordpress/B2evolution and Drupal.

    The reason I ask is because your design seems different then most blogs and I'm looking for something unique.

    P.S Sorry for getting off-topic but I had to ask!

Оставить комментарий




* обязательно для заполнения

1 введенный почтовый адрес используется только для обратной связи при ответах в комментариях и сервиса gravatar.com
.