Создание выпадающего списка с помощью JHTML в Joomla
Опубликовано Ноябрь 21st, 2009 SBКласс JHTML используется повсеместно в Joomla, но в тоже время он может показаться несколько загадочным классом, т.к. обычно мы видим странный вызов JHTML::_(), куда через параметр передаются какие то загадочные строки из которых потом получается не менее загадочный HTML.
Первое, что необходимо знать, JHTML – это сервисный класс, который вызывает классы потомки, исходя из входящих параметров. До конца не понятно, почему бы сразу не вызывать класс потомок, но коль уж решили разбираться в стиле кодирования под Joomla, то нужно делать так как предписывает сообщество, чтобы код смогли понять и другие разработчики.
Для того, чтобы начать работу с этим зверем, мы рассмотрим, как создать простейший раскрывающийся список.
Прежде чем начать, логично разобрать API класса потомка JHTMLSelect с которым мы будет работать. Мы будем использовать наиболее простой метод называющийся genericlist:
string genericlist (array
$arr, string $name, [string $attribs = null], [string $key = 'value'], [string $text = 'text'], [mixed $selected = NULL], [
$idtag = false], [
$translate = false])
- $arr – массив, который содержит элементы для списка
- $name – название тега, которое используется для определения выбранного значения. Другими словами, это атрибут name тега <select>
- $attribs – дополнительные атрибуты для тега <select>. В большинстве случает нет необходимости использовать данную возможность, достаточно передать в качестве параметра NULL.
- $key – относится к значению в $arr, который обращается к значению опции. Это – значение, которое Вы будете фактически получать, когда Вы сделаете обработку. В большинстве случаев установлено в ‘value’
- $selected – устанавливает выбранный элемент списка. Должен являться одним из элементов массива $arr.
- $idtag – устанавливает значение атрибута id, в основном используется для определения стилей через CSS и использования AJAX, др.
- $translate – установив данный параметр true, каждый элемент <select> будет прогоняться через JTEXT. Я бы рекомендовал использовать JTEXT во время заполнения массива $arr и установить данную переменную в false.
Давайте посмотрим, как создать массив значений для списка:
$arr = array(
JHTML::_('select.option', 'dog', JText::_('Dog')),
JHTML::_('select.option', 'cat', JText::_('Cat')),
JHTML::_('select.option', 'rat', JText::_('Rat'))
);
Здесь мы создаем элементы для списка с помощью вызова JHTML, первый параметр должен быть всегда установлен ’select.option’, второй параметр устанавливает значение элемента списка, третий параметр – как отображать данный элемент списка.
Собственно дело осталось за малым – создать сам список:
$currentValue = 'cat'; // текущее значение (например выбрано из БД)
echo JHTML::_('select.genericlist', $arr, 'animals', null, 'value', 'text', $currentValue);
Глядя на первый параметр, несложно догадаться, что вызов JHTML::_ будет преобразован в вызов JHTMLSelect::genericlist(), который уже и создать необходимый html список. С помощью других функций можно также создать список радиокнопок вместо выпадающего. Документация Joomla хоть и очень краткаялаконичная, но с её помощью всегда можно найти описание необходимых функций и классов.
mail@sergebezborodov.com
580408949
sergebezborodov
+380 66 777 92 25
Оставить комментарий