2012-09-04 41 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" />