выбрать несколько флажков в CakePHP? - PullRequest
2 голосов
/ 03 февраля 2011

У меня есть следующий код для нескольких флажков ..

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

когда я выбираю несколько вариантов и отправляю форму, появляется следующая ошибка: «Неизвестный столбец« Массив »в« списке полей »». Я хочу сохранить значения флажков.

Ответы [ 2 ]

2 голосов
/ 03 февраля 2011

Вам необходимо закодировать полученный 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 голос
/ 03 февраля 2011

Похоже, вы пытаетесь сохранить некоторую информацию HABTM.Если это так, взгляните на этот учебник: http://mrphp.com.au/code/working-habtm-form-data-cakephp.

Если вам нужна дополнительная помощь, нам понадобится некоторый код, такой как Модели и код контроллера, который сохраняет записи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...