В первом уроке мы создали простой компонент, используя фрэймворк Joomla! 1.5.
Также мы вставили лишний код в Вид, который не соответствует MVC, потому что Вид должен только выводить данные, и не должен содержать их.

В этом уроке вы узнаете как перенести данные из вида в Модель.В дальнейшем вы увидете удобство всего этого.

Создание модели.

Понятие модели получило такое название, потому что этот класс предназначен, чтобы представить некоторый объект. В нашем случае, первая модель это приветствие.
Наименование моделей строятся следующим образом: название компонента, model, название модели.
В нашем случае это HelloModelHello.
Далее мы будем моделировать одно поведение нашей модели, т.е. само приветствие.Мы создадим метод getGreeting (), который просто вернет строку Hello, World!.
Код модели:

<?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, World!';
 }
}

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

Сейчас мы создали нашу модель, и теперь нужно подкоректировать Вид.

Использование модели

Фрэймворк Joomla работает так, что контроллер автоматически загрузит модель, которая имеет то же самое название как и вид, после чего поместит модель в вид. В результате мы легко можем получить модель, используя метод JView:: getModel().

Наш код в Виде содержал строку:

$greeting = "Hello World!";

Чтобы использовать нашу модель, мы изменяем эту строку на:

$model =&amp;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;amp; $this->getModel();
 $greeting = $model->getGreeting();
 $this->assignRef( 'greeting', $greeting );
 
 parent::display($tpl);
 }
}
?>  

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

Фрэймворк Joomla будет искать нашу модель в каталоге models. Подкоректируем xml-файл.

<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>2007 02 22</creationDate>
 <author>John Doe</author>
 <authorEmail></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>Component Version String</version>
 <!-- The description is optional and defaults to the name -->
 <description>Description of the component ...</description>
 
 <!-- Site Main File Copy Section -->
 <files folder="site">
 <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>
 <filename>models/index.html</filename>
 <filename>models/hello.php</filename>
 </files>
 
 <administration>
 <!-- Administration Menu Section -->
 <menu>Hello World!</menu>
 
 <!-- Administration 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 /admin/ in the package -->
 <files folder="admin">
 <!-- Site Main File Copy Section -->
 <filename>index.html</filename>
 <filename>admin.hello.php</filename>
 </files>       
 </administration>
</install>

Заключение

Сейчас мы имеем простейший MVC компонент, каждый элемент которого очень прост но очень гибок по функциональности.


Если у Вас возникли вопросы, то для скорейшего получения ответа рекомендуем воспользоваться нашим форумом

You have no rights to post comments