我正在尝试使用 JFormFieldUser::getInput 作为我的 Joomla 表单的输入。
在后端(使用超级用户登录),当我调用此方法时,它会在单击时生成一个漂亮的“选择用户”框,显示所有用户的列表以供选择。
我一直在尝试在前端表单上使用用户表单字段(以超级用户身份登录)。结果有些令人困惑和不受欢迎。生成了一个“选择用户”链接,但是当单击它时,结果是加载了超级用户“用户配置文件”:不是所有用户的列表。
为什么会这样,以及如何让“选择用户”像在后端一样显示完整的用户列表。
Joomla 3(来自您的字段定义):
<field name="field_name" type="sql" label="COM_FIELD_LABEL"
sql_select="id,name"
sql_from="#__users"
value_field="name"
key_field="id"
description=""
header="DROP_DOWN_HEADER"
required="false" />
我没有太多运气。相反,我创建了自己的组件并添加了来自 com_users 的内容。工作了一个款待。
显然做不到
JForm (Joomla) User 字段是您可以在 Joomla 文章表单中看到的 Joomla 核心字段,用于选择用户(带有用户列表的灯箱)。注意这个字段不能在前端使用,因为Joomla核心不在前端管理它......我们经常用一个选择动态字段替换前端的这个字段。
可以相当简单地完成,但有一些重大限制 - 取决于您的用例。
然后将 复制\libraries\cms\form\field\user.php
到您选择的字段位置(在模式子目录中)并将其重命名为user2.php
. 使类名JFormFieldModal_Users2
和 $type='Modal_Users2'。
如果需要,不要忘记将新路径添加到表单 .xml。类型将是“modal_users2”。
最后一步。在 user2.php 中,更改:
$link = 'index.php?option=com_users&view=users&layout=modal&tmpl=component&field=' . $this->id
. (isset($groups) ? ('&groups=' . base64_encode(json_encode($groups))) : '')
. (isset($excluded) ? ('&excluded=' . base64_encode(json_encode($excluded))) : '');
到
$link = 'administrator/index.php?option=com_users&view=users&layout=modal&tmpl=component&field=' . $this->id
. (isset($groups) ? ('&groups=' . base64_encode(json_encode($groups))) : '')
. (isset($excluded) ? ('&excluded=' . base64_encode(json_encode($excluded))) : '');
有点hacky,但符合我的目的。
这里不那么 hacky,但不那么迷人的解决方案:SQL 表单域类型