Joomla - 管理面板中的动态下拉列表

时间:2013-01-20 12:47:35

标签: php javascript joomla

我在Joomla的管理面板中为我的用户创建表单添加了一个下拉列表! 1.5(使用.xml文件)。我遇到的问题是它的内容必须是动态的(来自外部源文件)。我的问题是我能做到的地方(也可能是这样)。

3 个答案:

答案 0 :(得分:2)

您可以创建自己的类型。 在您的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 );
    }

}

答案 1 :(得分:0)

如果您使用的是xml表单,则可以使用sql type字段。

<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

答案 2 :(得分:0)

我有这个问题 - 就像你告诉我的那样,我的代码看起来像那样:

    <?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');
 }

 ?>

但它没有出现 - 它实际上为它腾出空间,但它是空的:(我将继续尝试修复它。