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

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

Смотрите также:
Комментарии (47) Добавить комментарий
  • Дмитрий
    Дмитрий
    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.

  • bit.ly
    bit.ly
    04 Июня 2022, 00:41
     ↑  0  ↓     ответ

    Greetings! Very helpful advice in this particular post!

    It is the little changes which will make the most important changes.

    Thanks for sharing!

  • bit.ly
    bit.ly
    05 Июня 2022, 05:18
     ↑  0  ↓     ответ

    Hi, i think that i saw you visited my web site thus i came to “return the favor”.I'm attempting to find

    things to improve my website!I suppose its ok to use some of

    your ideas!!

  • tinyurl.com
    tinyurl.com
    16 Июля 2022, 00:31
     ↑  0  ↓     ответ

    Informative article, just what I wanted to find.

  • tinyurl.com
    tinyurl.com
    22 Июля 2022, 18:36
     ↑  0  ↓     ответ

    Keep on writing, great job!

  • http://tinyurl.com/
    http://tinyurl.com/
    23 Июля 2022, 10:51
     ↑  0  ↓     ответ

    It's hard to come by well-informed people in this particular topic, however, you seem like you

    know what you're talking about! Thanks

  • http://tinyurl.com/2bvoo8k8
    http://tinyurl.com/2bvoo8k8
    28 Июля 2022, 04:21
     ↑  0  ↓     ответ

    Spot on with this write-up, I honestly feel this amazing site needs a lot more attention. I'll probably be returning

    to read through more, thanks for the advice!

  • http://tinyurl.com
    http://tinyurl.com
    28 Июля 2022, 08:16
     ↑  0  ↓     ответ

    Great article! That is the kind of information that should be

    shared around the internet. Disgrace on Google for no longer positioning this

    post upper! Come on over and visit my site . Thank you

    =)

  • tinyurl.com
    tinyurl.com
    02 Августа 2022, 06:30
     ↑  0  ↓     ответ

    This design is spectacular! You most certainly know how to keep a reader amused.

    Between your wit and your videos, I was almost moved to start my own blog (well, almost...HaHa!) Fantastic job.

    I really loved what you had to say, and more than that, how you presented it.

    Too cool!

  • wiki.volleyball-bayern.de
    wiki.volleyball-bayern.de
    07 Августа 2022, 19:38
     ↑  0  ↓     ответ

    It's nearly impossible to find knowledgeable people about this topic, however, you sound like you know what you're talking about!

    Thanks

  • tinyurl.com
    tinyurl.com
    08 Августа 2022, 20:35
     ↑  0  ↓     ответ

    Informative article, exactly what I was looking

    for.

  • http://www.nerdarena.co.uk/community/profile/rayconvk/
    http://www.nerdarena.co.uk/community/profile/rayconvk/
    10 Августа 2022, 07:55
     ↑  0  ↓     ответ

    Hi would you mind stating which blog platform you're working with?

    I'm looking to start my own blog soon but I'm having a hard time deciding between BlogEngine/Wordpress/B2evolution and Drupal.

    The reason I ask is because your design and style seems different then most

    blogs and I'm looking for something unique. P.S

    Sorry for being off-topic but I had to ask!

  • http://tinyurl.com/2o6naply
    http://tinyurl.com/2o6naply
    10 Августа 2022, 13:31
     ↑  0  ↓     ответ

    It's an remarkable post for all the web viewers;

    they will obtain advantage from it I am sure.

  • special
    special
    12 Августа 2022, 07:14
     ↑  0  ↓     ответ

    I read this piece of writing completely about the difference of most

    up-to-date and earlier technologies, it's remarkable

    article.

  • http://tinyurl.com/
    http://tinyurl.com/
    13 Августа 2022, 19:57
     ↑  0  ↓     ответ

    Hi there, There's no doubt that your site could possibly be having web browser compatibility problems.

    Whenever I look at your website in Safari, it looks fine however, if opening in I.E.,

    it has some overlapping issues. I simply wanted to give you a quick heads up!

    Apart from that, great website!

  • http://tinyurl.com/2oc4xvta
    http://tinyurl.com/2oc4xvta
    15 Августа 2022, 20:41
     ↑  0  ↓     ответ

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

    amusement account it. Look advanced to more added agreeable from you!

    However, how can we communicate?

  • tinyurl.com
    tinyurl.com
    16 Августа 2022, 08:29
     ↑  0  ↓     ответ

    whoah this blog is fantastic i like reading your articles.

    Keep up the good work! You realize, many people are searching around

    for this information, you could help them greatly.

  • tinyurl.com
    tinyurl.com
    17 Августа 2022, 19:24
     ↑  0  ↓     ответ

    I have read so many posts on the topic of the blogger lovers

    except this paragraph is actually a fastidious paragraph,

    keep it up.

  • special
    special
    03 Сентября 2022, 17:29
     ↑  0  ↓     ответ

    I have been browsing online more than three hours nowadays, but

    I never found any interesting article like yours. It is lovely worth enough for

    me. In my view, if all site owners and bloggers made excellent content material as you did, the internet will likely

    be much more useful than ever before.

  • http://tinyurl.com
    http://tinyurl.com
    05 Сентября 2022, 04:51
     ↑  0  ↓     ответ

    Quality articles or reviews is the crucial to be a focus

    for the viewers to pay a quick visit the website, that's what this website is providing.

  • tinyurl.com
    tinyurl.com
    07 Сентября 2022, 21:00
     ↑  0  ↓     ответ

    Woah! I'm really loving the template/theme of this website.

    It's simple, yet effective. A lot of times it's very difficult

    to get that "perfect balance" between user friendliness and appearance.

    I must say you have done a awesome job with this.

    Also, the blog loads very fast for me on Safari. Superb Blog!

  • http://tinyurl.com
    http://tinyurl.com
    13 Сентября 2022, 10:00
     ↑  0  ↓     ответ

    It's awesome in favor of me to have a website, which is helpful in support of my knowledge.

    thanks admin

  • tracfone 2022
    tracfone 2022
    26 Ноября 2022, 17:30
     ↑  0  ↓     ответ

    I'm truly enjoying the design and layout of your site. It's a very easy on the eyes which makes it much more enjoyable

    for me to come here and visit more often. Did you hire out a designer to create your theme?

    Excellent work!

  • Jamika
    Jamika
    28 Января 2023, 10:46
     ↑  0  ↓     ответ

    Hi joomla-book.ru webmaster, Thanks for the detailed post!

  • buy cialis
    buy cialis
    18 Ноября 2023, 21:56
     ↑  0  ↓     ответ

    I all the time used to study paragraph in news

    papers but now as I am a user of internet so from now I am using net for content, thanks to web.

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




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

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