2014-02-06 133 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(); 
} 

希望这有助于节省某人的时间。 :)快乐编码.. !!!