SQL-запити для створення випадаючих списків в XML
19.11.2011, 01:08 | Прочитано: 8793 раз | Для розробників | Автор: Денис Носов
В Joomla 1.7 є чудова можливість формувати випадаючі списки з вибіркою даних із бази даних. У цій статті розмова піде про деякі можливості параметрів XML для формування випадаючих списків.
Атрибути для поля XML
Давайте для початку ознайомимося із атрибутами поля 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
<field name="title" type="sql" default="10" label="Select an article" query="SELECT id AS value, title FROM #__content" />
Зверніть увагу, що в даному прикладі нам необхідно використовувати конструкцію AS
, щоб визначити значення поля value
, оскільки таблиця #__content
у якості первинного ключа містить стовпець ID, але не VALUE. Більшість же таблиць, які використовуються в Joomla мають стовпець первинного ключа з назвою VALUE. Крім того завжди можна використовувати атрибут key_field
для визначення стовпця
<field name="title" type="sql" default="10" label="Select an article" query="SELECT id, title FROM #__content" key_field="id" />
Даний приклад поверне ідентичний, порівняно з попереднім, результат.
Далі ми хочемо дати нашому полю ім'я не title
, а MyField
. Для цього нам потрібно використовувати аліас AS
в SQL-запиті:
<field name="myfield" type="sql" default="10" label="Select an article" query="SELECT id AS value, title AS myfield FROM #__content" />
Або альтернативний варіант з перевизначенням атрибута value_field
.
<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. Наприклад ми хочемо в спадному списку бачити дату створення поруч з назвою статті
<field name="title" type="sql" default="10" label="Select an article" query="SELECT id, (title, '-', created) AS title FROM #__content" />
Префікс таблиць в даних конструкціях вказується у вигляді #_
, при виконанні він буде автоматично замінено на префікс таблиць бази даних, який використовуються в Joomla!