Расширение возможностей Компонента "Hello" - Урок № 2- Добавление Model

В первом уроке был создан простой компонент view-controller для CMS Joomla 1.5.

Реализован код вывода приветствия, который является точным образцом MVC.

В этом уроке расширим возможности и гибкость компонента "Hello" добавив Бизнес модель ( Model )

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

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

В Joomla 1.5, Модель будет содержать классы функций: добавить, удалить и модернизировать информацию в таблицах базы данных. Также содержать методы восстановления списка таблиц базы данных.

В общем основная структура доступа к данным должна быть кратко описана в модели.

Таким способом, если обработку запроса данных необходимо изменить , который использует дата - файл, базу данных, Модель - единственный элемент, в который вносятся изменения , не затрагивая код Представления ( view) или Контроллера ( controller ).

При переносе точки запроса данных в общем алгоритме компонента, вносятся изменение только в код Представления.

В этом уроке, будем моделировать событие компонента "Hello", которое генерирует приветствие. Таким образом в компоненте будет один запрос к модели getGreeting (), который возвратит строку "Hello, World!".

Образец кода для класса Модели:

<?php/** * Hello Модель для "Hello" Компонета * * @package Автор * @package component/model/models/hello.php * @link URL Автора * @license Тип лицензии ( GNU/GPL ) */// Check to ensure this file is included in Joomla!defined('_JEXEC') or die();jimport( 'joomla.application.component.model' );/** * Hello Model * * @package Автор * @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 1.5 В данном случае подгружается структура, которая требуются для нашего компонента. Этот специфический запрос загрузит файл /libraries/joomla/application/component/model.php. Точки "." используются как директивные слеши, и последняя часть - имя загружаемого файла. С помощью этой функции все файлы загружаются из библиотеки ( директория libraries ). Этот специфический файл содержит определение класса для JModel class, который является необходимым, так как наша модель является продолжением этого класса.

Создав Модель, необходимо изменить Представление, добавить запрос к Модели для получения строки приветствия.

Используем Модель ( Model ) в Представление ( view )

Структура Joomla 1.5 - организована таким способом, что контроллер автоматически загрузит модель, которая имеет то же название что и представление ( view ) и передаст доступ к своему классу . Так как Представление называется "Hello", модель "Hello" будет автоматически загружена и опубликована в представление ( view ). Поэтому, мы можем легко объявить функцию класса модели, используя метод JView:: в строке JView:: getModel ().

В код файла view.html.php вносим изменения заменяем строку:

$greeting = "Hello World!"

;

На этот код:

$model = $this->getModel();$greeting = $model->getGreeting();

Так должен выглядеть полный код файла view.html.php:

<?php/** * Hello View for Hello World Component * * @package Автор * @subpackage Components * @link components/views/hello/view.html.php * @license GNU/GPL */// no direct accessdefined( '_JEXEC' ) or die( 'Restricted access' );jimport( 'joomla.application.component.view');/** * HTML View class for the HelloWorld Component * * @package Joomla.Tutorials * @subpackage Components */class HelloViewHello extends JView{ function display($tpl = null) { $model = $this->getModel(); $greeting = $model->getGreeting(); $this->assignRef( 'greeting', $greeting ); parent::display($tpl); }}?> Добавление для файла hello.xml

Для завершения работы над данной версией компонента, необходима в секцию Site ( Front End) добавить файлы Модели:

<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> <!-- The following elements are optional and free of formatting conttraints --> <creationDate>2007 02 22</creationDate> <author>Имя Автора</author> <authorEmail> Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. Этот адрес e-mail защищен от спам-ботов. Чтобы увидеть его, у Вас должен быть включен Java-Script </authorEmail> <authorUrl>www.autor.net</authorUrl> <copyright>Копирайт</copyright> <license>Лицензия</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 компонент. Каждый элемент очень прост в данный момент, но компонент уже обладает более большей гибкостью и возможностью.



Расширение возможностей Компонента "Hello" - Урок № 2- Добавление Model - Генератор расширений Joomla и многое другое на нашем сайте посвященном работе расширений, компонентов, модулей, плагинов для линейки Joomla. Отправляйте ссылку на страницу своим друзьям и в социальные сети воспользовавшись графическими иконками выше.

Блог

Календарь приёма объявлений

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

Дырка в com_content

Сегодня у товарища, сайт которого находится на старой  Joomla 1.0.3, была сильная нагрузка на сервере, просматривая логи обнаружил не вежливый запрос такого порядка: http://сайт/index2...

Лечим вирус на сайте

  Первоначальный осмотр сайта обнаружил, что у клиента закрыт доступ по фтп, что сузило круг подозреваемых уязвимостей, стало быть отверстие в какомто скрипте движка joomla. Касперский яро...

Troj/JSRedir-MH

Снова грянул гром зарежения сайтов новым вирусом  Troj/JSRedir-MH.  И так в коротко по вирусу Troj/JSRedir-MH. Вирус или троян куда интереснее чем свои предшествиники, тепер...

Доработка расширения для рассылки Send Email JK

Сегодня поделюсь немного интересной информацией для владельцев сайтов собранных ан joomla.  Рано и поздно возникает задача подписки и рассылки информации с сайта, это может быть разная постановка зада...

Привет Ie 10 регулярка

И вот и мне пришлось столкнулся с проблемами перехода на win 8 в придачу с ie 10, некоторых постоянных пользователей моих сайтов. На многих сайтах  имеющих раздел по приёму объявлений, использ...

Kunena заменяем ссылку на профиль пользователя

Всем привет, снова снова кунена, получил задание на допиливание популярного форума Kunena, сегодня потребовалось поменять ссылку на профиль пользователя. Это связано с тем, что на сайте стоит социа...

Работает на Kunena - зачем на каждой странице?

  Все у кого стоит форум kunena мешает надпись с двумя ссылкам внизу форума "Работает на Kunena". Сея надпись висит на каждой странице форма, а также страница разработчиков содержит множество вн...

Kunena избавимся от лишних quote

Для тех кто действительно делает сайт для людей, моя следующая заметка. Расскажу вам, как избавиться от лишних quote в постах на форуме kunena. У меня несколько тематических сайтов с нормальной посеща...

Kunena решаем проблему с пропажей аватаров

Так и вот мы обновись до последней версии кунены, сразу видно компонент внутри сильно изменился, и вот незадача у некоторых пользователей пропали аватары, физически они есть но неотображаются. ...

Джомлавикам

Обработка параметров расширений joomla

При разработке расширений для CMS Joomla, таких как плагины, модули, компоненты или шаблоны, часто возникает необходимость получить параметры разрабатываемого или любого другого расширения. В этой ...

Кunena крамсаем шаблон

1. В папке \components\com_kunena\template\ваш_шаблон\ находим файл template.xml и вставляем в него такой кусок (чтобы была возможность выбора показывать это поле или нет): <param name="l...

Подключить свои классы и методы в Joomla?

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

3 новых полезных класса в Joomla 2.5

В платформе Joomla 11.3 разработчики добавлил несколько полезных новых классов для разработчиков. Рассмотрю некоторый из них - JGrid (для построения HTML таблиц), JWebClient (для получения информац...

Репозиторий файлов на Joomla средствами Apache

Создадим две вложенные директории /files/files в корне сайта. Если вы пожелаете использовать другие имена директорий, то вам необходимо будет внести соответствующие правки в дальнейшем. ...