Создание Model-View-Controller компонента часть 2 - добавление модели |
Введение /** * Hello Model for Hello World Component * * @package Joomla. Tutorials * @subpackage Components * @link http://docs. joomla. org/Developing_a_Model-View-Controller_Component_-_Part_2 * @license GNU/GPL */ // No direct access Defined( '_JEXEC' ) or die( 'Restricted access' ); Jimport( 'joomla. application. component. model' ); /** * Hello Model * * @package Joomla. Tutorials * @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. Она подключает файлы Joomla необходимые для нашего компонента. В данном случае мы загрузили файл /libraries/joomla/application/component/model. php. Точки являются разделителями директорий, а последнее слово («model») – название файла. Путь для загрузки любых файлов с помощью этой функции строиться относительно папки libraries. Файл model. php содержит описание класса JModel, который необходим нам, т. к. модель является потомком этого класса. $greeting = "Hello World!"; Теперь нам надо заменить ее на следующие строки: $model =& $this->getModel(); $greeting = $model->getGreeting(); Полностью код представления будет выглядеть так: <?php /** * @package Joomla. Tutorials * @subpackage Components * @link http://docs. joomla. org/Developing_a_Model-View-Controller_Component_-_Part_2 * @license GNU/GPL */ // 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 <filename>models/hello. php</filename> Новый файл hello. xml будет иметь следующую структуру: <?xml version="1.0" encoding="utf-8"?> <install type="component" version="1.5.0"> <name>Hello</name> <!-- The following elements are optional and free of formatting conttraints --> <creationDate>2007-02-22</creationDate> <author>John Doe</author> <authorEmail>john. doe@example. org</authorEmail> <authorUrl>http://www. example. org</authorUrl> <copyright>Copyright Info</copyright> <license>License Info</license> <!-- The version string is recorded in the components table --> <version>1.01</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>controller. php</filename> <filename>hello. php</filename> <filename>index. html</filename> <filename>models/hello. php</filename> <filename>models/index. html</filename> <filename>views/index. html</filename> <filename>views/hello/index. html</filename> <filename>views/hello/view. html. php</filename> <filename>views/hello/tmpl/default. php</filename> <filename>views/hello/tmpl/index. html</filename> </files> <administration> <!-- Administration Menu Section --> <menu>Hello World!</menu> <!-- Administration Main File Copy Section --> <files folder="admin"> <filename>hello. php</filename> <filename>index. html</filename> </files> </administration> </install> Заключение
|