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