Печать

Создание MVC компонента Joomla 1.5 - Добавляем Модель

Текст ниже основан на комопоненте view-controller для CMS Joomla 1.5. Для полного понимания статьи можно прочитать создание комопонета "Hello world", где в итоге получается простейший компонент приветствия, который можно считать образцом кода MVC. Он прост и фактически ничего не делает поэтому необходима модель, создание которой мы рассмотрим ниже.

Создание модели

Модель - часть компонента, которая предоставляет данные для вида по его запросу посланому через Контроллер. Такой метод часто освобождает от рутинной работы и от хаоса в коде, предоставляет возможность управлять данными удобным способом в дополнение к коду, который посылает запрос данных из Модели.

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

При подобной реализации вся обработка данных ложиться на модель и если вдруг случиться такое что нам необходимо изменить источник данных с MySQL на RSS-ленту, то измениться только модель, не затрагивая всего остального кода - шаблона (он же Вид, Представление, View) и контроллер (controller).

При переносе точки запроса данных в общем алгоритме компонента, вносятся изменение только в код Представления.

В этом уроке, будем моделировать событие компонента "Hello", которое генерирует приветствие. Таким образом в компоненте будет один запрос к модели getGreeting(), который возвратит строку "Hello, World!".

Код модели для компонента "Hello Word"

 

Строка, которая начинается с jimport - это функция используется, для подключения библиотек Joomla. В данном случае подгружается структура, которая требуются для нашего компонента. Этот специфический запрос загрузит файл

<корень сайта>/libraries/joomla/application/component/model.php

Точки "." используются как директивные слеши, и последняя часть - имя загружаемого файла. Таким образом можно загружать любые библиотеки из директории "libraries".

Это специфический файл содержит определение класса JModel, который является необходимым для нормальной работы модели компонента, поэтому наш класс должен его расширять.

Создав Модель, необходимо изменить Представление - добавить запрос к Модели для получения строки приветствия.

Используем Модель ( Model ) в Представление ( view )

Структура Joomla - организована таким способом, что контроллер автоматически загрузит модель, которая имеет то же название что и представление (view) и передаст доступ к своему классу. Так как Представление называется "Hello", модель "Hello" будет автоматически загружена и опубликована в Представление (view). Поэтому, мы можем легко объявить функцию класса модели, используя метод класса JView::getModel().

В код файла view.html.php вносим изменения. Заменяем строку:

$greeting = "Hello World!";

На строку

$model = $this->getModel(); $greeting = $model->getGreeting();

Так должен выглядеть итоговый код файла view.html.php:

getModel();
        $greeting = $model->getGreeting();
        $this->assignRef( 'greeting', $greeting );
        parent::display($tpl);
    }
}
?> 

Добавление для файла hello.xml

В завершение работы над данной версией компонента, необходима в секцию Site (Front End) добавить файлы Модели:

<filename>models/hello.php</filename>

В итоге мы имеем простой MVC-компонент. Каждый элемент очень прост, но в целом компонент уже обладает более большей гибкостью и возможностью.

Интересная статья? Поделись ей с другими: