2014-02-06 63 views
2

我已經創建了一個組件。我嘗試將xml表單中的數據存儲到數據庫中。這適用於所有文本字段,但字段「複選框」會產生問題。Joomla字段類型複選框不會更新數據庫

下面是XML代碼:在edit.php

<?php echo $this->form->getInput('color'); ?> 

這是完全一樣的的Joomla文檔相同

<field name="color" type="checkboxes" label="COM_COLOR" multiple="true"> 
    <option value="1">red</option> 
    <option value="2">blue</option> 
    <option value="3">green</option> 
    <option value="4">yellow</option>    
</field> 

代碼: http://docs.joomla.org/Checkboxes_form_field_type

但是如果我點擊保存複選框的值不存儲在數據庫中。誰能幫忙?謝謝

Joomla版本:3.2.1

編輯:現在它工作! 將以下代碼寫入擴展了JTable的php文件中。 (your_component /表/ your_file.php)

public function store($updateNulls = true) 
{ 
    JArrayHelper::toString($this->color); 
    $this->color= implode(',', $this->color); 
    return parent::store($updateNulls); 
} 
+0

您能否澄清一下,如果您在字段集內部或外部進行此操作,並且字段或字段集名稱是否與數據庫中的字段名稱匹配? – Elin

回答

0

在你明確規定狀態的文檔:

注意:[...] 它會爲你創建複選框,並提交它們的值的形式爲數組,,但它不會將它們存儲在數據庫中。

要獲取你所要做的,因爲它在documentation that you provided說值,取複選框值的整個陣列,並分別處理它們。否則,您可以創建個性化複選框,這些複選框可用於開箱即用。更多信息here

+0

謝謝ilias ...我沒有看到它! – user3033136

+0

我已將字段類型更改爲「列表」。但也有同樣的問題!這些值未保存在數據庫中。你有什麼建議嗎? – user3033136

+0

你如何獲取列表項?你能用模型中的一些代碼或從哪裏得到並保存數據來更新問題嗎? – ilias

0

在Joomla> 2.5中,您可以將其存儲爲逗號分隔的字符串。你必須覆蓋你的默認保存功能,添加一行來創建逗號分隔的字符串。

例如:

function save(){  

    $data = JRequest::getVar('jform', null, 'post', 'array'); 
    $checkbox_options = $data['checkbox_field_name']; 

    $data['checkbox_field_name']=implode(",", $checkbox_options); 

    JRequest::setVar('jform', $data); 

    return parent::save(); 
} 

希望這有助於節省某人的時間。 :)快樂編碼.. !!!