Главный Каталог Статей РФ
87238 авторов, размещено 47366 статей, сейчас на сайте пользователей: 452 Статистика
Аватар kokon

Создание Model-View-Controller компонента часть 2 - добавление модели

Категория:  Интернет  | Автор:  kokon | Опубликовано: 25.08.2009

Введение

В первой части нашего руководства мы создали простой компонент, состоящий всего из двух частей: представление и контроллер. Текст приветствия был жестко прописан в коде представления. Это не является хорошим примером MVC, поскольку представление предназначено только для того чтобы отображать данные и не должно содержать их. Во второй части руководства мы продемонстрируем, как перенести эти данные из представления в модель. В следующих частях мы покажем всю мощь и гибкость данного подхода.

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

Модель получила такое название, потому что этот класс призван представить (или смоделировать) какой-либо объект. В наше случае наша первая модель будет представлять приветствие. Это соответствует нашему проекту, потому что у нас есть одно представление, показывающее наше приветствие.
В соответствии с соглашением о наименовании моделей принятом в Joomla название класса должно начинаться с названия компонента (в нашем случае сначала идет слово «hello» потом «model», а потом снова «hello»). Поэтому класс нашей модели называется HelloModelHello.
Здесь мы смоделируем только одно действие нашего «hello». Наша модель будет выводить приветствие. Таким образом, у нас будет всего один метод, который называется getGreeting(). Он возвращает строку «Hello World!».

Вот код класса нашей модели:

<?php
/**
* 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, который необходим нам, т.к. модель является потомком этого класса.
Теперь у нас есть код, создающий нашу модель. Нам теперь надо изменить представление, чтобы оно могло выводить приветствие.

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

Joomla устроена таким образом что контроллер автоматически загрузит модель, имеющую такое же имя как и представление и поместит его в это представление. Поскольку наше представление называется «Hello», модель с тем же названием будет загружена автоматически и помещена в него. Поэтому мы можем легко получить ссылку на нашу модель, использую метод JView::getModel() (Если модель имеет другое наименование, мы можем передать его в JView::getModel())

Наш предыдущий код представления содержал строку:


$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

Все что осталось это добавить ссылки в xml файл, чтобы Joomla могла скопировать нужные файлы при установке. Joomla будет искать нашу модель в папке models так что ссылка на нее должна выглядеть так:


<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>

Заключение

Теперь у нас есть простой MVC компонент. Каждая его часть очень проста, но все вместе дает довольно большую гибкость в использовании.

Статья здесь Часть 3

Комментарии
К этой статье пока нет комментариев. Станьте первым! У нас гости не могут комментировать статьи. Пожалуйста авторизуйтесь или зарегистрируйтесь, чтобы прокомментировать.
Интересные статьи по теме
Аватар AnemoN
Накрутка лайков и подписчиков ВКонтакте Есть несколько хитрых и не очень методов, которые используются для т.н. "накрутки лайков".О заслуживающих внимания пойдет речь в этой статье....
Категория: Интернет | Автор: AnemoN | Добавлено: 17.02.2013
Аватар Jetti
Буксы — что это такое и как правильно выбрать букс для заработка Из-за коронавируса, "блуждающего" по всему миру вот уже второй год, у многих людей появилось огромное количество свободного времени. Одни стали тратить это время на хобби, другие — читать книги и смот...
Категория: Интернет | Автор: Jetti | Добавлено: 20.07.2021
Аватар Lizetta
Сколько времени уходит на создание сайта? Сколько времени тратит специалист на разработку сайта? В какой срок можно создать сайт и чем обуславливается это?...
Категория: Интернет | Автор: Lizetta | Добавлено: 03.06.2011
Аватар gul_itb
Как правильно представить информацию на сайте Зачем люди сидят в Интернете? В основном есть две причины – это развлечение и поиск информации. Ваш корпоративный сайт, конечно же тоже служит этим двум целям Интернет-общения. Даже бизнес-сайт о чем-...
Категория: Интернет | Автор: gul_itb | Добавлено: 26.10.2009
Аватар Marta22
Как улучшить страницу на сайте вконтакте Советы, как сделать страницу в vkontakte лучше...
Категория: Интернет | Автор: Marta22 | Добавлено: 21.08.2009
Свежие комментарии
Ну, вот это я понимаю, настоящая инструкция для тех, кто хочет не просто «привет, как дела», а чтобы дамы сами в личку ломились! Как говорится, техник...

Читать >>

Куклы-обереги действительно имеют глубокий символизм и интересную историю, которая часто теряется в современных интерпретациях. Например, многие не зн...

Читать >>

Полностью поддерживаю подход, описанный в статье! Рисование — не просто творческое занятие, а ключевой инструмент для развития ребёнка. Как детский пс...

Читать >>

Интересная подборка ошибок, но не могу не высказать скепсис по поводу части рекомендаций. Например, о зарядке только до 80% — это логично с техническо...

Читать >>

Работал соцработником пару лет, и вот что не написали: это не только помощь людям, но и куча бумажек, отчётов и согласований. Бывает, половина времени...

Читать >>

Лучшие авторы
Аватар pupkina
Не пью, не курю, не ...

Читать

Аватар 91s
91s

Что мы делаем???
Сказать, что мы прода...

Читать

Напишите нам