Расширение возможностей Компонента "Hello" - Урок № 2- Добавление Model
В первом уроке был создан простой компонент view-controller для CMS Joomla 1.5.
Реализован код вывода приветствия, который является точным образцом MVC.
В этом уроке расширим возможности и гибкость компонента "Hello" добавив Бизнес модель ( Model )
Создание модели
Модель - часть компонента, которая предоставляет данные для Представления по его запросу посланому через Контроллер. Такой метод часто освобождает от рутинной работы и от хаоса в коде, предоставляет возможность управлять данными удобным способом в дополнение к коду, который посылает запрос данных из Модели.
В Joomla 1.5, Модель будет содержать классы функций: добавить, удалить и модернизировать информацию в таблицах базы данных. Также содержать методы восстановления списка таблиц базы данных.
В общем основная структура доступа к данным должна быть кратко описана в модели.
Таким способом, если обработку запроса данных необходимо изменить , который использует дата - файл, базу данных, Модель - единственный элемент, в который вносятся изменения , не затрагивая код Представления ( view) или Контроллера ( controller ).
При переносе точки запроса данных в общем алгоритме компонента, вносятся изменение только в код Представления.
В этом уроке, будем моделировать событие компонента "Hello", которое генерирует приветствие. Таким образом в компоненте будет один запрос к модели getGreeting (), который возвратит строку "Hello, World!".
Образец кода для класса Модели:
<?php/** * Hello Модель для "Hello" Компонета * * @package Автор * @package component/model/models/hello.php * @link URL Автора * @license Тип лицензии ( GNU/GPL ) */// Check to ensure this file is included in Joomla!defined('_JEXEC') or die();jimport( 'joomla.application.component.model' );/** * Hello Model * * @package Автор * @subpackage Components */class HelloModelHello extends JModel{ /** * Gets the greeting * @return string The greeting to be displayed to the user */ function getGreeting() { return 'Hello, World!'; }}
Строка, которая начинается с jimport. Эта функция используется, для загрузки файлов Joomla 1.5 В данном случае подгружается структура, которая требуются для нашего компонента. Этот специфический запрос загрузит файл /libraries/joomla/application/component/model.php. Точки "." используются как директивные слеши, и последняя часть - имя загружаемого файла. С помощью этой функции все файлы загружаются из библиотеки ( директория libraries ). Этот специфический файл содержит определение класса для JModel class, который является необходимым, так как наша модель является продолжением этого класса.
Создав Модель, необходимо изменить Представление, добавить запрос к Модели для получения строки приветствия.
Используем Модель ( Model ) в Представление ( view )
Структура Joomla 1.5 - организована таким способом, что контроллер автоматически загрузит модель, которая имеет то же название что и представление ( view ) и передаст доступ к своему классу . Так как Представление называется "Hello", модель "Hello" будет автоматически загружена и опубликована в представление ( view ). Поэтому, мы можем легко объявить функцию класса модели, используя метод JView:: в строке JView:: getModel ().
В код файла view.html.php вносим изменения заменяем строку:
$greeting = "Hello World!"
;
На этот код:
$model = $this->getModel();$greeting = $model->getGreeting();
Так должен выглядеть полный код файла view.html.php:
<?php/** * Hello View for Hello World Component * * @package Автор * @subpackage Components * @link components/views/hello/view.html.php * @license GNU/GPL */// no direct accessdefined( '_JEXEC' ) or die( 'Restricted access' );jimport( 'joomla.application.component.view');/** * HTML View class for the HelloWorld Component * * @package Joomla.Tutorials * @subpackage Components */class HelloViewHello extends JView{ function display($tpl = null) { $model = $this->getModel(); $greeting = $model->getGreeting(); $this->assignRef( 'greeting', $greeting ); parent::display($tpl); }}?> Добавление для файла hello.xml
Для завершения работы над данной версией компонента, необходима в секцию Site ( Front End) добавить файлы Модели:
<filename>models/hello.php</filename>
Код для нового файла hello.xml:
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE install SYSTEM "http://dev.joomla.org/xml/1.5/component-install.dtd"><install type="component" version="1.5.0"> <name>Hello</name> <!-- The following elements are optional and free of formatting conttraints --> <creationDate>2007 02 22</creationDate> <author>Имя Автора</author> <authorEmail> Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. </authorEmail> <authorUrl>www.autor.net</authorUrl> <copyright>Копирайт</copyright> <license>Лицензия</license> <!-- The version string is recorded in the components table --> <version>Component Version String</version> <!-- The description is optional and defaults to the name --> <description>Description of the component ...</description> <!-- Site Main File Copy Section --> <files folder="site"> <filename>index.html</filename> <filename>hello.php</filename> <filename>controller.php</filename> <filename>views/index.html</filename> <filename>views/hello/index.html</filename> <filename>views/hello/view.html.php</filename> <filename>views/hello/tmpl/index.html</filename> <filename>views/hello/tmpl/default.php</filename> <filename>models/index.html</filename> <filename>models/hello.php</filename> </files> <administration> <!-- Administration Menu Section --> <menu>Hello World!</menu> <!-- Administration Main File Copy Section --> <!-- Note the folder attribute: This attribute describes the folder to copy FROM in the package to install therefore files copied in this section are copied from /admin/ in the package --> <files folder="admin"> <!-- Site Main File Copy Section --> <filename>index.html</filename> <filename>admin.hello.php</filename> </files> </administration></install>
Заключение
Мы теперь имеем простой MVC компонент. Каждый элемент очень прост в данный момент, но компонент уже обладает более большей гибкостью и возможностью.
Расширение возможностей Компонента "Hello" - Урок № 2- Добавление Model - Генератор расширений Joomla и многое другое на нашем сайте посвященном работе расширений, компонентов, модулей, плагинов для линейки Joomla. Отправляйте ссылку на страницу своим друзьям и в социальные сети воспользовавшись графическими иконками выше.