2014-02-21 65 views
0

我面臨Joomla表單字段的奇怪問題我已經添加了一個字段集類型列表和設置屬性爲multiple="true"。這裏的代碼:在列表中的多個選擇選項提交類型不工作Joomla 3.2

<field name="optional" 
      type="list" 
      label="Optional" 
      description="Optional endorsements" 
      class="inputbox" 
      size="5" 
      multiple="true" 
     > 

     <option value="Water"> 
       Water</option> 
     <option value="Foundation"> 
      Foundation</option> 
</field> 

現在,當我保存表格,然後只有一個值得到保存時,選擇多個值。我不知道有什麼問題,如果有人有任何解決方案,請幫助我。

回答

4

你沒有得到價值,因爲你沒有得到並保存它的權利。這就是你需要做什麼: 在你的JTable bind()方法,你需要添加下面幾行:

if (isset($array['optional']) && is_array($array['optional'])) { 
    $registry = new JRegistry; 
    $registry->loadArray($array['optional']); 
    $array['optional'] = (string) $registry; 
} 

這將您的多個選擇數組轉換成字符串,將被保存在數據庫中。

,然後在模型的方法getItem你需要添加下面幾行:

if ($item = parent::getItem($pk)) { 
    $registry = new JRegistry; 
    $registry->loadString($item->optional); 
    $item->optional = $registry->toArray(); 
} 

這將DATABSE字符串轉換回數組並把它傳遞給你的jForm。

+0

這裏只是示例代碼,希望它有幫助。如果它不起作用,請與我分享您的jTable綁定方法,以及jModel getItem方法,然後我將能夠提供更多幫助。 – di3sel

+0

試過了,Joomla在Joomla 3.6.x中爲我工作,現在在數據庫中存儲一個JSON對象:{「0」:「1」,「1」:5}而不是1,5。與我的SQL列表字段完美配合。 –

+0

太好了。謝了哥們。你讓我今天一整天都感覺很好。乾杯 – amilaishere

0

首先,@ di3sel是完全正確的。我只是添加了一些不適合評論的內容。

如果您將第二個代碼添加到jTable:load方法而不是,也很好。但是代碼會稍微改變一點。請注意,在這種情況下,我們必須使用$this代替$item

parent::load($pk); 

$registry = new JRegistry; 
$registry->loadString($this->optional); 
$this->optional = $registry->toArray(); 

這也很好,只有一個類文件需要修改。希望這有助於至少有人。