Joomla表单字段用户前端

时间:2012-09-04 08:57:54

标签: forms joomla

我正在尝试使用JFormFieldUser :: getInput作为Joomla表单的输入。

在后端(以超级用户身份登录),当我调用此方法时,单击时会生成一个漂亮的“选择用户”框,显示要从中选择的所有用户的列表。

我一直在尝试使用前端表单上的用户表单字段(使用超级用户登录)。结果是一些令人困惑和不受欢迎的事情。生成“选择用户”链接,但点击它时,结果是超级用户“用户个人资料”被加载:不是所有用户的列表。

为什么会这样,以及如何让'select user'显示用户的完整列表,就像它在后端一样。

4 个答案:

答案 0 :(得分:0)

我没有太多运气。相反,我创建了自己的组件并添加到com_users的内容中。做了一个款待。

答案 1 :(得分:0)

Apparently无法完成

  

JForm(Joomla)用户字段是您可以使用的Joomla核心字段   请参阅Joomla文章表单以选择用户(带有列表的灯箱)   用户)。因为这个领域不能用于前端   Joomla核心不会在前端管理它...通常我们会替换它   选择动态字段的前端字段。

答案 2 :(得分:0)

可以相当简单地完成,但有一些重大限制 - 取决于您的使用案例。

  • 用户必须登录后端(即使您尝试访问信息前端)。如果他们没有登录,则会提示登录并退出模式:(
  • 用户必须拥有用户管理器的权限

然后将\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,但符合我的目的。

这里不那么狡猾但不那么迷人的解决方案:The SQL formfield type

答案 3 :(得分:0)

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" />