Выдели фрагмент текста с ошибкой или неточностью и нажми Ctrl+Enter!
Выдели фрагмент текста с ошибкой или неточностью и нажми Ctrl+Enter!
В первых двух уроках научились строить простой Model-View-Controller компонент. В итоге в компоненте есть одно Представление (View), которое получает данные от Модели, созданной в
Будет продемонстрировано, как использовать JDatabase класс для работы с базой данных.
Наша модель в настоящее время имеет один метод: getGreeting(). Этот метод очень прост — все, что эта функция делает — возвращение жестко-закодированное (hardcode) приветствие.
Для работы с базой данных, загрузим приветствие в таблицу базы данных. При установке компонента необходимо создание таблицы с записью текстового поля с приветствием. Как создать SQL файл и какие строки добавить в hello.xml, рассмотрим позже.
Для начала заменим код в Модели для получения приветствия с таблицы базы данных.
В первую очередь нужно подключится к базе данных. В Joomla 1.5 все параметры для подключения уже есть и для того чтобы создать свое используем следующее:
JFactory — статический класс, который используется, чтобы подключится к многим объектам системы. Подробней информацию об этом классе можно посмотреть в документации API.
Чтобы получить доступ к глобальному объекту базы данных используем метод getDBO().
Важное замечание: Joomla подключается к базе данных самостоятельно и один раз во время запуска фреймворка, при использовании getDBO(), мы просто получим ссылку на объект базы данных.
Сохраняем запрос для получения объекта базы данных. Для этого вносим изменения в функции Модели getGreeting(), находящей в файле:
/components/com_hello/model/models/hello.php$db->loadResult() метод выполнит запрос к базе данных, который был установлен строкой выше через setQuery() и вернет полученный объект.
Joomla инсталлятор имеет встроенную поддержку выполнения запросов SQL в процессе установки компонента. Эти запросы должны быть сохранены в стандартном install.sql файле.
Для инсталляционного файла SQL используем три запроса:
Ниже все три запроса для инсталляционного файла:
Joomla сама заменит "#__ " на префикс таблицы текущей базы данных MySQL, исходя из текущих настроек. В первом запросе уничтожается таблица #__hello, это необходима для того, чтобы не было накладок при повторных установках одного и тоже компонента.
По второму запросу создается два поля в таблице.
Сохраняем эти запросы в файле install.sql и переносим его в дистрибутив компонента:
com_hello/admin/install.sql.При деинсталляции компонента необходимо удалять таблицы, которые были созданы установкой, но при этом нужно всегда учитывать, то что пользователь может случайно удалить компонент. Для того чтобы он таким образом не удалил свои данные в таблицах базы данных, необходимо требовать подтверждение такого действия:
Сохраняем этот запрос в файле uninstall.sql и переносим его в дистрибутив компонента:
com_hello/admin/uninstall.sql.Прежде чем указывать какие файлы использовать при установке и деинсталляции для запуска SQL запросов, нужно указать куда копировать эти файлы. Оба файла должны находится в корне папки административной части компонента. Далее, указываем инсталлятору какие файлы использовать для SQL запроса при установке и деинсталляции компонента.
Новый код для инсталляционного XML файла:
При установке и деинсталляции может быть два значения у атрибута charset, первый — «utf8» и если версия MySQL сервера не поддерживает кодировку utf8 указывается атрибут «non-utf8»
Атрибут driver пока может иметь только одно значение — «mysql». В дальнейшем планируется расширить возможности Joomla 1.5 для работы с разными базами данных.
Теперь компонент «Hello» может работать не только с MVC framework классами, но и с классами запросов JDatabase. Вы уже можете создавать компоненты работающее по технологии MVC с использованием таблиц базы данных, указывая их параметры инсталлятору
Здравствуйте! Я столкнулся с такой проблемой. Есть таблица с полями и я добавил туда ещё несколько полей. Некоторые добавил уже давненько, а некоторые недавно. В админке, в каталоге tables компонента прописал названия новых полей. Делаю запрос на доставание всех полей и у меня те, которые добавил недавно, не достаются. В чём может быть проблема? Joomla кэширует метаданные таблиц?
А можно как-то подробнее про структуру таблиц, полей и сам запрос ?
Спасибо, но я уже разобрался. Неправильно подключал внешний файл.
Пропущено: в xml для инстала и удаления необходио тоже подключить эти файлы:
<administration>
<files folder="admin">
...
<filename>install.sql</filename>
<filename>uninstall.sql</filename>
</files>
</administration>
Здравствуйте! у меня проблема, загрузила на сайт joomla 1.5.24 зашла на сайт начала автоматическую установку джумлы ввела базу данных а мне всё равно выдаёт ошибку : Не могу подключиться к базе данных. Номер ошибки: Unable to connect to the database:Could not connect to MySQL. если иная причина почему это происходит, введённые данные все правильные. Заранее благодарю!