Joomla字段类型复选框不会更新数据库

时间:2014-02-06 13:52:43

标签: checkbox joomla types field

我创建了一个组件。我尝试将数据从xml表单存储到数据库中。这适用于所有文本字段,但“复选框”字段会产生问题。

这是xml代码:

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

edit.php中的代码

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

与Joomla文档完全相同: 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);
} 

2 个答案:

答案 0 :(得分:0)

在您提供的文档中明确说明:

  

注意:[...] 它会为您创建复选框,并以数组的形式提交其值,但不会将它们存储在数据库中< / strong>。

要检索必须按照documentation that you provided中的说明执行的值,请获取复选框值的整个数组并单独处理它们。否则,您可以创建单独的复选框,以便开箱即用更多信息here

答案 1 :(得分:0)

在Joomla&gt; 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();
}

希望这有助于拯救某些人&#39;时间。 :)快乐的编码.. !!!