Реализован код вывода сообщения, который является точным образцом MVC.
На этом шаге мы в наш компонент добавим Бизнес модель (Model)
Создание модели
Модель - часть компонента, которая предоставляет данные для Представления по его запросу посланому через Контроллер. В Joomla 1.5, Модель будет содержать классы функций: добавить, удалить и модернизировать информацию в таблицах базы данных. На этом шаге мы будем моделировать событие нашего компонента, которое генерирует сообщение. Таким образом в компоненте будет один запрос к модели getBoardmsg (), который возвратит наше сообщение. Код модели будет таким:
<?php /** * Модель для Компонета "js_board" * @package JoomlaStart * @package component/model/models/js_board.php * @link http://www.joomlastart.ru * @license GNU/GPL *
// Защита от прямого обращения к скрипту defined( '_JEXEC' ) or die( 'Restricted access' ); jimport( 'joomla.application.component.model' ); class js_boardModeljs_board extends JModel { function getBoardMsg() { return 'Это доска объявлений'; } }
Примечание: jimport - функция загрузки библиотеки по указанному пути.
Сделаем изменения в файле view.html.php заменим строку:
$boardmsg = "Это доска объявлений";
На следующий код:
$model = $this->getModel(); $boardmsg = $model->getBoardMsg();
Файл view.html.php будет выглядеть так:
<?php /** * @package joomlastart * @subpackage Components * components/com_js_board/js_board.php * @link http://www.joomlastart.ru * @license GNU/GPL */ // Защита от прямого обращения к скрипту defined( '_JEXEC' ) or die( 'Restricted access' ); jimport( 'joomla.application.component.view'); /* HTML View class for the js_board Component * @package js_board */ class js_boardViewjs_board extends JView { function display($tpl = null) { $model = $this->getModel(); $boardmsg = $model->getBoardMsg(); $this->assignRef( 'boardmsg', $boardmsg ); parent::display($tpl); } } ?>
Остается добавить в наш установочный файл директивы для добавления файла модели
<filename>models/index.html</filename> <filename>models/js_board.php</filename>
Весь установочный файл будет таким:
<?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>js_board</name> <!-- The following elements are optional and free of formatting conttraints --> <creationDate>2011 02 10</creationDate> <author> joomlastart</author> <authorEmail>info@joomlastart.ru</authorEmail> <authorUrl>http://www.joomlastart.ru</authorUrl> <copyright>Copyright Info</copyright> <license>License Info</license> <!-- The version string is recorded in the components table --> <version>0.0.2</version> <!-- The description is optional and defaults to the name --> <description>Description of the component ...</description> <!-- Site 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 /site/ in the package --> <files folder="site"> <filename>index.html</filename> <filename>js_board.php</filename> <filename>controller.php</filename> <filename>views/index.html</filename> <filename>views/js_board/index.html</filename> <filename>views/js_board/view.html.php</filename> <filename>views/js_board/tmpl/index.html</filename> <filename>views/js_board/tmpl/default.php</filename> <filename>models/index.html</filename> <filename>models/js_board.php</filename> </files> <administration> <!-- Administration Menu Section --> <menu>Board </menu> <!-- Administration Main File Copy Section --> <files folder="administrator"> <filename>index.html</filename> <filename>admin.js_board.php</filename> </files> </administration> </install>
скачать компонент Шаг 2 можно здесь





