选择cakephp中的多个复选框?

时间:2011-02-03 11:45:14

标签: php cakephp checkbox

我有多个复选框的以下代码..

 echo $this->Form->input('type', array('type' => 'select', 'multiple' => 'checkbox','options' => array(
                'client' => 'Client',
                'vendor' => 'Vendor',
                'employee' => 'Employee'
            )
         ));

当我选择多个选项并提交表单时,出现以下错误:“字段列表中的未知列'数组'”。我想保存复选框的值。

2 个答案:

答案 0 :(得分:2)

您需要将多个复选框中的结果array编码为string,然后再将其保存到数据库中。

在这种情况下,它可能最简单到implode()数组,但是数据更结构化(即嵌套数组,关联数组),你也可以使用像json_encode()这样的东西。

var_dump($this->data);
/*
array
  'Model' => 
    array
      'type' => 
        array
          0 => string 'client' (length=6)
          1 => string 'vendor' (length=6)
*/

$this->data['Model']['type'] = implode(',', $this->data['Model']['type']);
var_dump($this->data);
/*
array
  'Model' => 
    array
      'type' => string 'client,vendor' (length=13)
*/

当您在单个列中存储多个值时,这将使查询数据库变得更加困难(并且更慢)。

$this->Model->find('all', array(
    'conditions' => array(
        'type LIKE' => '%vendor%'
    )
));

答案 1 :(得分:1)

看起来您正在尝试存储一些HABTM信息。如果是这种情况,请查看本教程:http://mrphp.com.au/code/working-habtm-form-data-cakephp

如果您需要更多帮助,我们需要查看一些代码,例如模型和保存记录的控制器代码。