Главный Каталог Статей РФ
85989 авторов, размещено 47108 статей, сейчас на сайте пользователей: 107 Статистика
Аватар 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
Лучшие авторы
Аватар Somersett
Агентство визуальных коммуникаций Somersett предла...

Читать

Аватар PokerPro
Играю в покер в свободное время.
Являюсь админи...

Читать

Аватар krasota24.com
Красота спасет мир!

Читать

Аватар AutoIWC
Автор автомобильного сайта

Читать

Аватар vovanstar
Пара Пара Слов Слов о себе. в Интернете

Читать

Свежие комментарии
Нормальная тема.

Читать

Талантливый человек талантлив во всём! Будь как Паша! А ещё ты можешь ...

Читать

Можно выбрать.

Читать

Ой, шутник.

Читать

https://priornews.ru/zastrojshhik-iz-hmao-sravnil-ufas-s-prestupnoj-gr...

Читать

Напишите нам