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, но при этом данные отображаются одни и те же, т.е модель одна и та же. Для этого мы создаем различные уровни Вида.

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

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

    В статье хотелось бы видеть именно реализацию 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!

  • Antoinette
    Antoinette
    22 Февраля 2021, 23:31
     ↑  0  ↓     ответ

    My relatives all the time say that I am wasting my time here at net, however I know I am

    getting know-how all the time by reading thes good articles

    or reviews.

  • http://tinyurl.com/yd6buceo
    http://tinyurl.com/yd6buceo
    26 Марта 2022, 09:12
     ↑  0  ↓     ответ

    Hi there great website! Does running a blog similar to this require

    a great deal of work? I've very little knowledge of programming however I was hoping to start

    my own blog in the near future. Anyways, should you have any recommendations or techniques for new blog owners please

    share. I understand this is off topic nevertheless I simply

    wanted to ask. Appreciate it!

  • tinyurl.com
    tinyurl.com
    27 Марта 2022, 13:49
     ↑  0  ↓     ответ

    Right now it sounds like Drupal is the top blogging platform

    out there right now. (from what I've read) Is that what you are using on your blog?

  • tinyurl.com
    tinyurl.com
    28 Марта 2022, 07:22
     ↑  0  ↓     ответ

    I will immediately clutch your rss as I can not

    in finding your email subscription link or e-newsletter service.

    Do you've any? Kindly let me know in order that I may subscribe.

    Thanks.

  • tinyurl.com
    tinyurl.com
    28 Марта 2022, 13:41
     ↑  0  ↓     ответ

    Greetings from Carolina! I'm bored at work so I decided to check out your website on my iphone during lunch break.

    I love the info you provide here and can't wait to take a look when I

    get home. I'm shocked at how quick your blog loaded on my mobile ..

    I'm not even using WIFI, just 3G .. Anyhow, wonderful site!

  • ticket flight
    ticket flight
    02 Апреля 2022, 17:37
     ↑  0  ↓     ответ

    I'm really impressed with your writing skills and also with

    the layout on your weblog. Is this a paid theme or did

    you customize it yourself? Anyway keep up the excellent quality writing, it's rare to see a nice

    blog like this one these days.

  • cheap plane tickets
    cheap plane tickets
    03 Апреля 2022, 14:06
     ↑  0  ↓     ответ

    I truly love your site.. Excellent colors & theme.

    Did you develop this site yourself? Please reply back as I'm trying to create my

    own personal blog and would love to know where you got this from or just

    what the theme is named. Thanks!

  • last minute flights
    last minute flights
    04 Апреля 2022, 08:51
     ↑  0  ↓     ответ

    My family members always say that I am wasting my time here at net, however I know I am getting knowledge everyday by reading such pleasant articles or reviews.

  • flight booking
    flight booking
    05 Апреля 2022, 01:27
     ↑  0  ↓     ответ

    Hello There. I found your weblog the usage of msn. This is a very neatly written article.

    I'll make sure to bookmark it and return to learn more of your helpful info.

    Thanks for the post. I will definitely comeback.

  • cheap tickets flights
    cheap tickets flights
    05 Апреля 2022, 08:38
     ↑  0  ↓     ответ

    Thank you for the good writeup. It in fact was a amusement account it.

    Look advanced to far added agreeable from you!

    By the way, how could we communicate?

  • how to find the cheapest flights
    how to find the cheapest flights
    05 Апреля 2022, 18:36
     ↑  0  ↓     ответ

    Appreciate the recommendation. Will try it out.

  • airfare
    airfare
    06 Апреля 2022, 06:29
     ↑  0  ↓     ответ

    Hello! This post couldn't be written any better! Reading this post reminds me of my previous room mate!

    He always kept talking about this. I will forward this page to him.

    Pretty sure he will have a good read. Many thanks for sharing!

  • ticket flight
    ticket flight
    06 Апреля 2022, 20:20
     ↑  0  ↓     ответ

    I believe this is among the so much significant information for

    me. And i am glad reading your article. But want to commentary

    on few general issues, The website taste is great, the articles is really nice : D.

    Just right task, cheers

  • gamefly
    gamefly
    07 Апреля 2022, 13:42
     ↑  0  ↓     ответ

    What's up to every one, as I am truly eager of reading

    this blog's post to be updated regularly. It carries fastidious information.

  • gamefly
    gamefly
    10 Апреля 2022, 19:20
     ↑  0  ↓     ответ

    I every time spent my half an hour to read this weblog's posts everyday along with a mug of

    coffee.

  • tinyurl.com
    tinyurl.com
    10 Мая 2022, 14:36
     ↑  0  ↓     ответ

    We stumbled over here coming from a different website and thought I might check things out.

    I like what I see so now i am following you.

    Look forward to looking over your web page for a second time.

  • tinyurl.com
    tinyurl.com
    11 Мая 2022, 19:40
     ↑  0  ↓     ответ

    Hello my family member! I want to say that this post is amazing,

    great written and come with approximately all vital infos.

    I would like to peer extra posts like this .

  • tinyurl.com
    tinyurl.com
    16 Мая 2022, 19:52
     ↑  0  ↓     ответ

    Thanks for sharing your info. I truly appreciate your efforts and I will be waiting for your further write ups thank

    you once again.

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




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

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