FL.ru – фриланс сайт удаленной работы №1. Поиск удаленной работы, фрилансеры.

Разработка Model-View-Controller (MVC) компонента. Часть 3 (продолжение)

Категории: Joomla

В предыдущих статьях (1, 2) мы провели урок по созданию простейшего компонента на фреймворке Joomla. Как дополнение был встроен код в View (вид), не соответствующий Model-View-Controller (MVC) нашего компонента, так как вид только выводит данные, но не содержит их, о чем было сказано ранее. В сегодняшней статье мы разберем перенос данных из View в Model (из вида в модель) – оцените удобство функции.

Создаем модель. Вообще определение «Model» получило такое имя из-за того, что главная функция этого класса – представление некоего объекта. В нашем прошлом случае модель – это приветствие Hello Mister. Сегодня создадим модель HelloModelHello. Обозначение модели происходит по следующей схеме – имя компонента, сама модель и имя модели. Смоделируем приветствие при помощи метода getGreeting (), который возвращает строку Hello Mister. Код в Model будет прописываться следующим образом:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
< ?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 Mister ';
 }
}

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

Как будем использовать модель

Конструктор Joomla работает таким образом, что controller будет автоматически загружать модель, имеющую такое же название, как и у вида. После загрузки controller переместит Model в View. То есть, для получения модели можно применить метод JView:: getModel(). В коде нашего вида была строка $greeting = «Hello Mister»; Для использования модели нужно заменить эту строку на следующую:

1
2
$model =&amp;amp; $this->getModel();
$greeting = $model->getGreeting();

Теперь наш код будет выглядеть так:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
< ?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.

1
<filename>models/hello.php</filename>

Результатом корректировки будет:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
< ?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>
</install>


1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- 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>


1
2
3
4
<administration>
 <!-- Administration Menu Section -->
 <menu>Hello World!</menu>
</administration>
1
2
3
4
5
6
7
8
9
<!-- 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>

Выводы

Мы создали простой компонент MVC (Model-View-Controller), все элементы которого достаточно просты в исполнении, но не очень гибкие по функциональности.




Подпишитесь на рассылку блога
max1net.com:
Уже подписались человек
Укажите свой e-mail