Разработка Model-View-Controller (MVC) компонента. Часть 3 (продолжение)

Категории: Joomla

В предыдущих статьях (1, 2) мы провели урок по созданию простейшего компонента на фреймворке Joomla. Как дополнение был встроен код в View (вид), не соответствующий Model-View-Controller (MVC) нашего компонента, так как вид только выводит данные, но не содержит их, о чем было сказано ранее. В сегодняшней статье мы разберем перенос данных из View в Model (из вида в модель) – оцените удобство функции.

Создаем модель. Вообще определение «Model» получило такое имя из-за того, что главная функция этого класса – представление некоего объекта. В нашем прошлом случае модель – это приветствие Hello Mister. Сегодня создадим модель HelloModelHello. Обозначение модели происходит по следующей схеме – имя компонента, сама модель и имя модели. Смоделируем приветствие при помощи метода getGreeting (), который возвращает строку Hello Mister. Код в Model будет прописываться следующим образом:

< ?php
defined('_JEXEC') or die();
 
jimport( 'joomla.application.component.model' );
 
class HelloModelHello extends JModel
{
 /**
 * Gets the greeting
 * @return string The greeting to be displayed to the user
 */
 function getGreeting()
 {
 return 'Hello Mister ';
 }
}

Рассмотрим строку, начинающуюся с jimport. Функция jimport применяется для того, чтобы подгружать файлы из Joomla. То есть – мы загружаем файл /libraries/joomla/application/component/model.php. Точка в адресе применяется для того, чтобы разделить папки, а в конце адреса прописывается имя файла. Все файлы имеют относительный путь к libraries. Результатом будет подключение класса JModel и его расширение. После создания модели необходимо внести корректировку в вид.

Как будем использовать модель

Конструктор Joomla работает таким образом, что controller будет автоматически загружать модель, имеющую такое же название, как и у вида. После загрузки controller переместит Model в View. То есть, для получения модели можно применить метод JView:: getModel(). В коде нашего вида была строка $greeting = «Hello Mister»; Для использования модели нужно заменить эту строку на следующую:

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

Теперь наш код будет выглядеть так:

< ?php
 
defined( '_JEXEC' ) or die( 'Restricted access' );
 
jimport( 'joomla.application.component.view');
 
class HelloViewHello extends JView
{
 function display($tpl = null)
 {
 $model =&amp; $this->getModel();
 $greeting = $model->getGreeting();
 $this->assignRef( 'greeting', $greeting );
 
 parent::display($tpl);
 }
}
?>

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

Joomla будет по умолчанию искать модель в models каталоге. Чобы облегчить задачу, необходимо изменить файл xml.

models/hello.php

Результатом корректировки будет:

< ?xml version="1.0" encoding="utf-8"?>
< !DOCTYPE install SYSTEM "http://dev.joomla.org/xml/1.5/component-install.dtd">

 Hello
 2007 02 22
 John Doe
 
 http://www.example.org
 Copyright Info
 License Info
 
 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 (Model-View-Controller), все элементы которого достаточно просты в исполнении, но не очень гибкие по функциональности.




Подпишитесь на рассылку блога
max1net.com: