Шрифт:
Запрос может быть сформулирован в виде строки либо разбит на составляющие и построен с помощью методов класса JDatabaseQuery.
Запрос задается для последующего выполнения методом setQuery, а выполняется либо методом query, либо, если нам необходимо получить результат, одним из методов для получения форматированного результата: loadResult, loadRow и т.д.
Для каждой таблицы, использующейся расширением, необходимо создать класс, производный от JTable. Для каждого поля таблицы необходимо создать одноименное поле этого класса. Производный от JTable класс наследует в числе прочих методы bind, store, load и delete, позволяющие управлять записями таблицы без единой строки SQL-кода. Когда компонент получает массив переменных запроса, он осуществляет связывание, то есть присваивает каждому полю этого класса значение элемента массива, ключ которого совпадает с названием данного поля.
Существуют методы класса JTable для управления часто используемыми полями ordering, checked_out/checked_out_time, published и hits.
Вопросы
Что такое реальный и символический префиксы?
Какие операции необходимо осуществить для выполнения запроса к базе данных Joomla?
Каким образом может быть сформулирован SQL-запрос?
Какие методы задают и выполняют запрос?
Для чего создается производный от JTable класс?
В чем заключается связывание?
Каким образом осуществляется управления часто используемыми полями?
Упражнения
Адаптируйте код из раздела " Практика" для своего варианта (см. список вариантов в дополнительных материалах).
Генерация элементов HTML (класс JHTML)
Лекция посвящена классу JHTML и поддерживающим классам. Рассмотрены методы для вывода элементов XHTML.
Цель лекции:Изучить готовые методы Joomla для генерации и отображения элементов XHTML и поведений JavaScript.
Основной метод класса JHTML
Joomla содержит методы для генерации и отображения элементов XHTML и поведений JavaScript. Эти методы вызываются с помощью
mixed _(string $type)
Несмотря на то, что в прототипе метода JHTML::_ указан всего один параметр, на практике их, как правило, бывает больше. Они интерпретируются так: по первому параметру метод _ определяет, какой метод необходимо вызвать, а остальные параметры передаются в этот метод.
Параметр $type может быть трех видов:
Название метода самого класса JHTML. Например, $type = 'image' приведет к вызову JHTML::image.
<имя файла>.<имя метода>. Будет вызван метод поддерживающего класса JHTML<Имя файла>.<имя метода>. В имени поддерживающего класса первая буква <имени файла> станет заглавной. Например, если $type='select.genericlist', то будет вызван метод JHTMLSelect::genericlist.
<префикс>.<имя файла>.<имя метода> и будет вызван метод <префикс>.<Имя файла>.<имя метода>.
Методы класса JHTML
Класс JHTML содержит восемь методов для вывода элементов XHTML.
Поле для ввода даты и пиктограмма, по щелчку на которой появляется календарь
string calendar(string $value, string $name, string $id, string $format = '%Y-%m-%d', array $attribs = null)
где:
$value - значение даты; $name - имя текстового поля; $id - id текстового поля; $format - формат даты; $attribs - дополнительные атрибуты, которые должны быть выведены в теге <input>.
Для примера выведем текущую дату (рис. 3.1):
echo JHTML::_('calendar', date('Y-m-d',time), 'created', 'created', '%Y-%m-%d', array('size'=>10,'style'=>"class='inputbox'"));
Рис. 3.1. Поле для ввода даты и пиктограмма для вывода календаря
Строка, содержащая дату в заданном формате и часовом поясе
string date(string $input = 'now', string $format = null, mixed $tz = true, bool $gregorian=false)
где:
$input - строка в формате, подходящем для функции date; $format - формат, к которому необходимо привести дату; $tz - одна из временных зон, поддерживаемых PHP (их список можно найти на странице ссылка: http://www.php.net/manual/ru/timezones.php). Кроме того, $tz может иметь логическое значение: при $tz=true временная зона берется из настроек пользователя, при $tz=false - из настроек сервера; $gregorian - при false для форматирования даты будет использоваться локальный календарь.