Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Checkbox Joomla字段类型复选框不';更新数据库_Checkbox_Joomla_Types_Field - Fatal编程技术网

Checkbox Joomla字段类型复选框不';更新数据库

Checkbox Joomla字段类型复选框不';更新数据库,checkbox,joomla,types,field,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> &l

我已经创建了一个组件。我尝试将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>

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

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


要检索您必须按照中的说明执行的值,请获取复选框值的整个数组并分别处理它们。否则,您可以创建单独的复选框,这些复选框将用于显示更多信息。

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

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

谢谢你,伊利亚斯。。。我还没看到呢!我已将字段类型更改为“列表”。但也有同样的问题!这些值未保存在数据库中。你有什么建议吗?你如何获取列表项?你能用模型中的一些代码或者从哪里获取和保存数据来更新这个问题吗?我刚刚将字段类型从“复选框”更改为“列表”。我认为joomla save()方法将完成剩下的工作。。。我要去哪里取数据?其他字段,如“文本”或“媒体”等,在不获取数据的情况下工作正常。我无法想象您的代码是什么样子。我最后的猜测是列表的
颜色
名称与数据库中的字段不同,或者数据库字段类型不同。您能否澄清您是在字段集内部还是外部执行此操作,以及字段或字段集名称是否与数据库中的字段名称匹配?
public function store($updateNulls = true)
{
    JArrayHelper::toString($this->color);
    $this->color= implode(',', $this->color); 
    return parent::store($updateNulls);
} 
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();
}