Печать
Категория: Программирование joomla
Просмотров: 17153

В прошлом уроке был создан простой компонент на оснвое view-controller для CMS Joomla 1.5, который выводил "Hello World!" в окно браузера. Но для вывода "Hello World!" мы его вставили в код Вида (view), который не соответствует MVC, потому что Вид должен только выводить данные, и не должен содержать их. В этом уроке мы перенесем данные из вида в Модель. В дальнейшем вы увидите удобство всего этого.

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

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

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

Таким способом, если необходимо изменить обработку запроса данных, то Модель (model) - единственный элемент, в который вносятся изменения, не затрагивая код Представления (view) или Контроллера (controller). При переносе точки запроса данных в общем алгоритме компонента, вносятся изменение только в код Представления.

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

Наименование моделей строятся следующим образом: название компонента, model, название модели. В нашем случае это HelloModelHello.

Код модели

Образец кода для класса Модели site/models/hello.php:

<?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. Функция jimport используется для загрузки файлов из фрэймворка Joomla. В нашем случае подгружается структура, которая требуются для нашего компонента. Этот запрос загрузит файл /libraries/joomla/application/component/model.php. Точки "." есть директивными слешами, и последняя часть - имя загружаемого файла. Все файлы загружаются относительно библиотек.

Далее в коде мы определяем необходимый класс для JModel class, так как наша модель является продолжением этого класса.

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

Использование модели ( Model )

Структура 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
 
defined( '_JEXEC' ) or die( 'Restricted access' );
 
jimport( 'joomla.application.component.view');
 
class HelloViewHello extends JView
{
    function display($tpl = null)
    {
        $model =& $this->getModel();
        $greeting = $model->getGreeting();
        $this->assignRef( 'greeting', $greeting );
 
        parent::display($tpl);
    }
}
?>

Добавление файла в установку

Фрэймворк Joomla будет искать нашу модель в каталоге models. Поэтому изменим xml-файл.
<filename>models/hello.php</filename>

Код для нового файла hello.xml:

<?xml version="1.0" encoding="utf-8"?>


	Hello
    
	2007 02 22
	Имя Автора
	Email Автора
	www.autor.net 
	Копирайт
	Лицензия
	
	Component Version String
	
	Description of the component ...

    
    
        index.html
        hello.php
        controller.php
        views/index.html
        views/hello/index.html
        views/hello/view.html.php
        views/hello/tmpl/index.html
        views/hello/tmpl/default.php
        models/index.html
        models/hello.php
    
    
    
        
        Hello World!
        
        
        
        
    
            index.html
            admin.hello.php
                
    

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

Архив исходных файлов для этого урока можно скачать по этой ссылке:
http://joomla-master.com/com_hello_3.zip


Предыдущие уроки по Основах программирования для Joomla 1.5:

Введение

Урок 1. Основы функционирования Joomla 1.5

Урок 2. Создание простейшего компонента для Joomla 1.5