2012-06-06 4 views
2

Я пытаюсь добавить дополнительные атрибуты HTML к некоторым параметрам выбора в раскрывающемся списке в Joomla 2.5 и хочу использовать встроенные HTML-помощники, а не писать HTML самостоятельно. Выходной ток:Добавление атрибутов для выбора параметров в Joomla

<select> 
    <option value="Red">Red</option> 
</select> 

, но я хотел бы, чтобы это было что-то вроде:

<select> 
    <option value="Red" data-img="red.jpg">Red</option> 
</select> 

, так что я могу получить доступ к атрибуту данных IMG с помощью Javascript, когда выбранные изменений опции.

Я создаю выбора опций, как так:

$select = JHtml::_('select.option', "Red", "Red"); 

, а затем передать их в JHTML создать общий список HTML:

$html = JHTML::_('select.genericlist', ...); 

Я просмотрел документацию и попытался передавая различные функции параметрам, но это очень запутанно с точки зрения всех опций (option.attr, attr и т. д.), которые используются функциями, и Google тоже ничего не проявил.

Может ли кто-нибудь сказать мне, какие дополнительные параметры мне нужно передать функциям, чтобы правильно его добавить, добавьте дополнительные атрибуты в элементы <option>?

Заранее благодарен!

+1

Сказать, что «выпадающий список в Joomla 2.5» является неопределенным, будет преуменьшением. Их сотни в Joomla, поэтому что-то более конкретное может вызвать ответ от кого-то. – GDP

+0

Вопрос был о вспомогательных функциях HTML, которые используются для создания списков выбора, а не для конкретного, который является частью Joomla, поэтому я не могу быть более конкретным. – Persata

+0

Достаточно честный. Вопрос включал «... некоторые варианты выбора в раскрывающемся списке ...», так что подразумевалось, что у вас есть что-то особенное, без примеров, чтобы объяснить, что это было. – GDP

ответ

4

Сегодня я боролся за этот точный сценарий, нужно добавить дополнительные данные с опциями выбора. После тщательного анализа файла joomla/libraries/joomla/html/html/select.php мне удалось сделать это с небольшим недостатком ...

Во-первых, в моем случае данные, используемые для выбора, исходя из базы данных, и нуждаются в подготовке к этому сценарию:

$db =& JFactory::getDBO(); 
$sql = 'SELECT nom AS value , nom AS text, prix FROM #__reservation_nourritures order by `ordering` asc'; 
$db->setQuery($sql); 
$nourritures = $db->loadObjectList(); 
foreach ($nourritures as $nourriture){ 
    //the data to use MUST be in an array form for the extra html attributes... 
    $nourriture->data = array('data'=>$nourriture->prix); 
} 

После того как данные готовы, вы можете передать его в функцию JHTML строить выберите:

echo JHTML::_('select.genericlist',$nourriture,'myId',array('class'=>'nourritures','option.attr'=>'data')); 

Короче говоря, «option.attr» должен использоваться для вставки атрибутов в параметры. Примечание. Функция select.genericlist MUST имеет только 3 аргумента, чтобы это работало. Из того, что я понимаю из функции, атрибуты только объединяются в параметры, если вы передаете точно 3 аргумента функции, иначе они просто игнорируют ее. Поэтому, если вы хотите, как пример, определить предварительно выбранный параметр с дополнительными параметрами, вам не повезло. Вот часть, касающаяся этого в функции:

if (is_array($attribs) && func_num_args() == 3) 
{ 
    // Assume we have an options array 
    $options = array_merge($options, $attribs); 
} 

Насколько я понимаю, это ошибка и/или плохое поведение. Когда я получу время, я нахожусь в ловушке в джойстике.

+0

Yep - этот код работает отлично, пока вы не добавите более трех аргументов в вызов функции, затем дополнительные параметры не выводятся. Это объяснит, почему я не мог заставить его работать - для вызова моей функции требуется более трех аргументов. Хорошая находка! Удивленный это не возникло раньше, я надеюсь, что он может быть исправлен. Благодаря! – Persata

Смежные вопросы