Реальный пиарCmsJoomla → Использование SQL запросов для формирования выпадающих списков в XML

Использование SQL запросов для формирования выпадающих списков в XML

sql запросы

При создании формы в расширениях движка есть замечательная возможность на лету формировать выпадающие списки на основе информации в базе данных. В данной статье рассмотрим подобные трюки для списков в XML (полезно, к примеру, при создании админской части модулейплагинов)

Данная статья актуальна для версий движка 1.61.7
Для !J1.5 стоит ознакомиться с статьями http://docs.joomla.org/Sql_parameter_type и http://docs.joomla.org/Parameter (в этой версии движка использовались параметры и немного другой синтаксис)
Общий список типов полей для форм можно найти здесь http://docs.joomla.org/Standard_form_field_types (англ)
Перечень параметров формирования выпадающего списка в XML
type (обязательно) обязательно должно быть sql.
name (обязательно) уникальное имя поля. Должно совпадать с именем столбца из результатов выборки в запросе, либо же возможно использование другого имени, указанного в value_field.
label (обязательно) (возможно использование значений из языкового файла) описание данного поля.
query (обязательно) SQL запрос, который формирует данные для выпадающего списка. Запрос должен обязательно возвращать два значения. Первое, value (можно переопределить в key_field) содержит значения для поля value элемента формы. Второе может быть названо как угодно (название можно переопределить атрибутом value_field) содержит отображаемый текст элементов списка.
default (опционально) значение по умолчанию. Соответствует полю 'value', либо переопределенному атрибуту key_field.
description (опционально) (возможно использование значений из языкового файла) текст отображаемый в всплывающей подсказке при наведении на выпадающий список.
key_field (опционально) если не задан – используется имя столбца из запроса, определенное как value. Либо же можно определить свой алиас столбца запроса для value и назначить его этому атрибуту.
value_field (опционально) имя столбца, которое формирует отображаемые значения выпадающего списка. Если не задан – будет использоваться столбец с тем же именем, что и name
Несколько примеров использования в XML:
1.
<field name="title" type="sql" default="10" label="Select an article" query="SELECT id AS value, title FROM #__content" />

Обратите внимание, что в данном примере нам необходимо использовать конструкцию AS, чтобы определить значение поля value, поскольку таблица jos_content в качестве первичного ключа содержит столбец ID, но не VALUE. Большинство же таблиц, испольлзуемых Joomla имеют столбец первичного ключа с названием VALUE. Кроме того всегда можно использовать атрибут key_field для определения столбца
1.
<field name="title" type="sql" default="10" label="Select an article" query="SELECT id, title FROM #__content" key_field="id" />

Данный пример вернет идентичный, по сравнению с предыдущим, результат.

Далее мы хотим дать нашему полю имя не title, а MyField. Для этого нам нужно использовать алиас AS в SQL запросе
1.
<field name="myfield" type="sql" default="10" label="Select an article" query="SELECT id AS value, title AS myfield FROM #__content" />

Либо альтернативный вариант с переопределением атрибута value_field.
1.
<field name="myfield" type="sql" default="10" label="Select an article" query="SELECT id, title FROM #__content" key_field="id" value_field="title" />

Также можно использовать стандартные конструкции t-sql. К примеру мы хотим в выпадающем списке видеть дату создания рядом с названием статьи
1.
<field name="title" type="sql" default="10" label="Select an article" query="SELECT id, ( title, ' - ', created) AS title FROM #__content" />

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

Примечание: Префикс таблиц в данных конструкциях указывается в виде #_, при выполнении он будет автоматически заменен на префикс таблиц базы данных, используемых движком


Источник: http://joomlablog.ru

Рекомендуем



Создаем RSS ленту для всех материалов контента в Joomla 1.7 В любом месте сайта создать иконку-ссылку на ленту RSS, указав в качестве источника полученный URL


Создаём собственный компонент на Joomla По этой причине большинство разработчиков сайтов не рассматривают вопрос о создании собственного расширения, а вместо этого ищут подходящее функциональным требованиям расширение на JED, настраивают его и переделывают под свои нужды


5 способов для ускорения загрузки сайта на Joomla Если вы обладаете достаточными навыками, то с помощью рук и напильника можно сократить подгружаемые скрипты до небольшого кол-ва необходимых скриптов, таким образом, избавив себя от последующей головной боли