Модель-Вид-Контроллер часть 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 компонент. Каждый элемент очень прост в данный момент, но компонент уже обладает более большей гибкостью и возможностью.
11
Комментарии
15.04.2010 10:22
01.03.2011 00:55
24.05.2011 00:29
Будте добры описание того, как достать часть компонента из админ панели и установки его на нужную страницу сайта.
Буду оч. признателен, даже возможно начать дискуссию по этому поводу в скайпе, так же есть вопросы нерешённые которые надо решить, или возможно напишите на майл .
Необходимо описать процес создания прав на полуение этого кода из админки ::root неподходит а больше я нечего незнаю, да и в интернете похожих сиаией нет.
26.05.2011 00:14
Но вы не ответили , и страшно мне становится когда все молчат, может быть вы умерли ? А сайт еще работает, а на кого завещание
19.01.2012 10:17
RSS лента комментариев этой записи