2012-09-04 61 views
1

我想使用JFormFieldUser :: getInput作为我的Joomla表单的输入。Joomla表格字段用户前端

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

我一直在尝试在前端表单上使用用户表单域(使用超级用户登录)。结果是一些令人困惑和不可取的东西。生成一个“选择用户”链接,但点击它时,结果是超级用户“用户配置文件”被加载:不是所有用户的列表。

这是为什么,我如何让'选择用户'显示用户的完整列表,就像它在后端做的那样。

回答

0

Apparently它不能做

的JForm(的Joomla)用户字段是Joomla!核心领域,你可以 看到的Joomla文章的形式来选择用户(灯箱和 用户的列表) 。由于 Joomla核心不在前端管理它...通常我们用前面的 字段替换为选择动态字段,因此该字段不能用于前端。

0

我对此没有多少运气。相反,我创建了自己的组件并添加到com_users的内容中。工作过一种享受。

+0

你可以做其他的事情,本来是创建一个自定义字段。 – Elin

0

可以做得相当简单,但有一些显着的限制 - 取决于您的使用情况。

  • 用户必须登录到后端(即使您试图访问信息前端)。如果他们没有登录,它会提示日志中,打破了模态:(的
  • 用户必须具有用户管理权限

然后复制到\libraries\cms\form\field\user.php您所选择的领域位置(在一个模态子目录)并将其重命名为user2.php。使类名称JFormFieldModal_Users2和$ type ='Modal_Users2'

如果需要,请不要忘记将新路径添加到表单.xml。是“modal_users2”

最后一步在user2.php中,c焊割:

$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))) : ''); 

有点哈克,但担任我的目的。

少哈克,但不那么吸引人的解决方案在这里:The SQL formfield type

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