Модель-Вид-Контроллер часть 2 - использование Модели
Создание модели (/models/hello.php)
Модель - часть компонента, которая предоставляет данные для Представления по его запросу посланому через Контроллер. Такой метод часто освобождает от рутинной работы и от хаоса в коде, предоставляет возможность управлять данными удобным способом в дополнение к коду, который посылает запрос данных из Модели.
В Joomla 1.5, Модель будет содержать классы функций: добавить, удалить и модернизировать информацию в таблицах базы данных. Также содержать методы восстановления списка таблиц базы данных.
Наименование моделей строятся следующим образом: название компонента, model, название модели.
В нашем случае это HelloModelHello.
В общем основная структура доступа к данным должна быть кратко описана в модели.
Таким способом, если обработку запроса данных необходимо изменить, Модель - единственный элемент, в который вносятся изменения , не затрагивая код Представления (View) или Контроллера (Controller).
При переносе точки запроса данных в общем алгоритме компонента, вносятся изменение только в код Представления.
В этой часте, будем моделировать событие компонента "Hello", которое генерирует приветствие. Таким образом в компоненте будет один запрос к модели getGreeting (), который возвратит строку "Hello, World!".
Образец кода для класса Модели:
jimport( 'joomla.application.component.model' );
Обратите внимание на эту строку. Функция jimport используется, чтобы загрузить файлы из структуры Joomla, которые требуются для нашего компонента. В данном случае загрузится файл /libraries/joomla/application/component/model.php. Точки используются как разделители директорий. Все файлы загружаются относительно директории библиотек - libraries.
В данном случае подключается файл из библиотеки - model.php. Это специальный файл, который описывает класс JModel, он нам необходим, потому что наша модель расширяет этот класс.
Теперь, когда мы создали модель, мы должны изменить Представление так, чтобы оно использовала данные от модели.
Использование модели
Структура Joomla! (framework) устроенна таим образом, что контроллер автоматически загрузит модель в Представление, если Модель имеет то же название что и Представление. Так как у нас названия совподают, то можно использовать метод JView:: getModel ().
В предидущей части Представление было таким:
$greeting = "Hello World!";
Теперь, с использованием Модели, оно будет таким:
$model =& $this->getModel();
$greeting = $model->getGreeting();
Конечный код Представления (/views/hello/view.html.php) будет:
<?php
// No direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
jimport( 'joomla.application.component.view');
/**
* HTML View class for the HelloWorld Component
*
* @package HelloWorld
*/
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>
<creationDate>November</creationDate>
<author>Nobody</author>
<authorEmail>nobody@example.org</authorEmail>
<authorUrl>http://www.example.org</authorUrl>
<copyright>Copyright Info</copyright>
<license>License Info</license>
<version>Component Version String</version>
<description>description of the component ...</description>
<!-- Site Main File Copy Section -->
<files folder="site">
<filename>models/hello.php</filename>
<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>
</files>
<administration>
<!-- Administration Menu Section -->
<menu>Hello World!</menu>
<!-- Administration Main File Copy Section -->
<files folder="admin">
<!-- Site Main File Copy Section -->
<filename>index.html</filename>
<filename>admin.hello.php</filename>
</files>
</administration>
</install>
Заключение
Мы теперь имеем простой MVC компонент. Каждый элемент очень прост в данный момент, но компонент уже обладает более большей гибкостью и возможностью.
0
Последние материалы
- 08.01.2010 Создаем AJAX компонент с использованием Mootools
- 06.01.2010 Создаем простой AJAX компонент
- 03.03.2009 Модель-Вид-Контроллер часть 1 - введение
- 02.03.2009 Модель-Вид-Контроллер часть 2 - использование Модели
- 01.03.2009 Модель-Вид-Контроллер часть 3 - использование БД
- 10.02.2009 Модель-Вид-Контроллер часть 4 - интерфейс Администратора