Я добавил раскрывающийся список в мою форму создания пользователя в панели администратора в Joomla! 1.5 (с использованием .xml-файлов). Проблема в том, что ее содержимое должно быть динамическим (происходит из внешнего исходного файла). Мой вопрос в том, где (и, возможно, как) я могу это сделать.
вы можете создать свой собственный тип. В вашем файле default.xml у вас будет что-то вроде:
<url addpath="/administrator/components/com_componentname/elements/"> <param name="id" type="myType" default="0" label="SELECT_LABEL" description="SELECT_DESC" /> </url>
и как реализация в /administrato/components/com_componentname/elements/myType.php
class JElementmyType extends JElement { var $_name = 'myType'; function fetchElement($name, $value, &$node, $control_name) { $list = READ_FILE_OR_DB_OR_ANYTHING(); array_unshift($list, JHTML::_('select.option', '0', '-'.JText::_('Select Me').' -', 'value', 'text')); return JHTML::_('select.genericlist', $list, ''.$control_name.'['.$name.']', 'class="inputbox"', 'value', 'text', $value, $control_name.$name ); }
}
Вы можете использовать поле типа sql, если вы используете форму xml.
<param name="user" type="sql" default="" label="Select an User" query="SELECT id, username FROM #__user" key_field="id" value_field="username" />
подробнее – http://docs.joomla.org/Sql_parameter_type
У меня есть эта проблема – сделано так же, как вы мне сказали, мой код выглядит так:
<?php jimport( 'joomla.html.html.select' ); class JElementKlasa extends JElement { var $_name = 'Klasa'; function fetchElement($name, $value, &$node, $control_name) { $list = array(1=>'a', 2=>'b'); $options = array(); foreach($list as $key=>$value) $options[] = JHTML::_('select.option', $key, $value); //array_unshift($list, JHTML::_('select.option', '0', "Take it")); return JHTML::_('select.genericlist', $options, 'klas', '', 'value', 'text'); } ?>
но он там не появляется – он фактически создает для него пространство, но он пуст: (я буду продолжать пытаться исправить его тем временем.