Печать

Создание MVC компонента Joomla 1.5 - База данных

Получение данных из базы

Наша модель в настоящее время имеет один метод: getGreeting(). Этот метод очень прост — все, что эта функция делает — возвращение жестко-закодированное (hardcode) приветствие.

Для работы с базой данных, загрузим приветствие в таблицу базы данных. При установке компонента необходимо создание таблицы с записью текстового поля с приветствием. Как создать SQL файл и какие строки добавить в hello.xml, рассмотрим позже.

Для начала заменим код в Модели для получения приветствия с таблицы базы данных.

В первую очередь нужно подключится к базе данных. В Joomla 1.5 все параметры для подключения уже есть и для того чтобы создать свое используем следующее:

$db = & JFactory::getDBO();

JFactory — статический класс, который используется, чтобы подключится к многим объектам системы. Подробней информацию об этом классе можно посмотреть в документации API.

Чтобы получить доступ к глобальному объекту базы данных используем метод getDBO().

Важное замечание: Joomla подключается к базе данных самостоятельно и один раз во время запуска фреймворка, при использовании getDBO(), мы просто получим ссылку на объект базы данных.

Сохраняем запрос для получения объекта базы данных. Для этого вносим изменения в функции Модели getGreeting(), находящей в файле:

/components/com_hello/model/models/hello.php
function getGreeting()
{
   $db = JFactory::getDBO();
   $query = 'SELECT greeting FROM #__hello';
   $db->setQuery( $query );
   $greeting = $db->loadResult();
   return $greeting;
}

$db->loadResult() метод выполнит запрос к базе данных, который был установлен строкой выше через setQuery() и вернет полученный объект.

Создаем инсталляционный SQL файл

Joomla инсталлятор имеет встроенную поддержку выполнения запросов SQL в процессе установки компонента. Эти запросы должны быть сохранены в стандартном install.sql файле.

Для инсталляционного файла SQL используем три запроса:

  • Удаление таблицы на случай, если с таким именем уже существует.
  • Создание таблицы и текстового поля для хранение строки приветствия.
  • Загрузка строки приветствия в поле таблицы.

Ниже все три запроса для инсталляционного файла:

DROP TABLE IF EXISTS `#__hello`;
CREATE TABLE `#__hello` (
  `id` int(11) NOT NULL auto_increment,
  `greeting` varchar(25) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT DEFAULT CHARSET=utf8;
INSERT INTO `#__hello` (`greeting`) VALUES ('Hello, World!'),
('Bonjour, Monde!'),
('Ciao, Mondo!');

Joomla сама заменит "#__ " на префикс таблицы текущей базы данных MySQL, исходя из текущих настроек. В первом запросе уничтожается таблица #__hello, это необходима для того, чтобы не было накладок при повторных установках одного и тоже компонента.

По второму запросу создается два поля в таблице.

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

Сохраняем эти запросы в файле install.sql и переносим его в дистрибутив компонента:

com_hello/admin/install.sql.

Создаем деинсталляционный uninstall.sql файл

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

DROP TABLE IF EXISTS `#__hello`;

Сохраняем этот запрос в файле uninstall.sql и переносим его в дистрибутив компонента:

com_hello/admin/uninstall.sql.

Заносим дополнение в инсталяционный файл hello.xml

Прежде чем указывать какие файлы использовать при установке и деинсталляции для запуска SQL запросов, нужно указать куда копировать эти файлы. Оба файла должны находится в корне папки административной части компонента. Далее, указываем инсталлятору какие файлы использовать для SQL запроса при установке и деинсталляции компонента.

Новый код для инсталляционного XML файла:



    <name&gtHello
    <creationDate&gt2007 02 22
    <author&gtJohn Doe
    <authorEmail&Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
    <authorUrl&gthttp://www.example.org
    <copyright&gtCopyright Info
    <license&gtLicense Info
    <version&gtComponent Version String
    <description&gtDescription of the component ...
    
        <filename&gtindex.html
        <filename&gthello.php
        <filename&gtcontroller.php
        <filename&gtviews/index.html
        <filename&gtviews/hello/index.html
        <filename&gtviews/hello/view.html.php
        <filename&gtviews/hello/tmpl/index.html
        <filename&gtviews/hello/tmpl/default.php
        <filename&gtmodels/hello.php
    
    
    
        
            
        
    
    
        
            
        
    
    
    
        <menu&gtHello World!
        
            <filename&gtinstall.sql
            <filename&gtuninstall.sql
         
    
 

При установке и деинсталляции может быть два значения у атрибута charset, первый — «utf8» и если версия MySQL сервера не поддерживает кодировку utf8 указывается атрибут «non-utf8»

Атрибут driver пока может иметь только одно значение — «mysql». В дальнейшем планируется расширить возможности Joomla 1.5 для работы с разными базами данных.

Теперь компонент «Hello» может работать не только с MVC framework классами, но и с классами запросов JDatabase. Вы уже можете создавать компоненты работающее по технологии MVC с использованием таблиц базы данных указывая их параметры инсталлятору.

Интересная статья? Поделись ей с другими: