0

我想在 joomla 2.5 注册中添加一个下拉列表。我相信我可以使用 sql 表单字段类型,但我希望该 sql 返回特定城市的所有学校(在注册表中)。所以问题是 sql 查询将如何接受一个参数?

4

1 回答 1

0

您必须在模型==> 字段中创建一种字段类型。

例如:创建一个 php 文件作为schools.php,然后包含以下代码。

==>学校.php(文件名)

defined('JPATH_BASE') or die;

class JFormFieldSchools extends JFormField
{   
protected $type = 'Schools';

protected function getInput()
{
    // Initialize variables.
    $html = array();
    $attr = '';

    // Initialize some field attributes.
    $attr .= $this->element['class'] ? ' class="'.(string) $this->element['class'].'"' : '';
    $attr .= ((string) $this->element['disabled'] == 'true') ? ' disabled="disabled"' : '';
    $attr .= $this->element['size'] ? ' size="'.(int) $this->element['size'].'"' : '';

    // Initialize JavaScript field attributes.
    $attr .= $this->element['onchange'] ? ' onchange="'.(string) $this->element['onchange'].'"' : '';

    // Get some field values from the form.
    $contactId  = (int) $this->form->getValue('id');
    $categoryId = (int) $this->form->getValue('catid');

    // Build the query for the ordering list.
    $query = 'SELECT ordering AS value, name AS text' .
            ' FROM #__contact_details' .
            ' WHERE catid = ' . (int) $categoryId .
            ' ORDER BY ordering';

    // Create a read-only list (no name) with a hidden input to store the value.
    if ((string) $this->element['readonly'] == 'true') {
        $html[] = JHtml::_('list.ordering', '', $query, trim($attr), $this->value, $contactId ? 0 : 1);
        $html[] = '<input type="hidden" name="'.$this->name.'" value="'.$this->value.'"/>';
    }
    // Create a regular list.
    else {
        $html[] = JHtml::_('list.ordering', $this->name, $query, trim($attr), $this->value, $contactId ? 0 : 1);
    }

    return implode($html);
}
}

然后,您必须根据需要更改 mysql 查询。

如果必须在默认的 joomla 注册页面上进行更改,则具有以下路径(.../com_users/models/forms/registration.xml)。

  <field name="xxxxx" type="Schools"
description="COM_USERS_REGISTER_NAME_DESC"
filter="string"
label="COM_USERS_REGISTER_NAME_LABEL"
message="COM_USERS_REGISTER_NAME_MESSAGE"
required="true"
size="30" />
于 2012-08-11T10:51:57.290 回答