複数の値を持つことができるCakephpフォームのチェックボックスがあります。ビューで:
<?php // Multiple checkbox form
echo $this->Form->input('report_types', array(
'type'=>'select',
'label'=>'Report Type(s)',
'multiple'=>'checkbox',
'options'=>array(
'option 1'=>'option 1',
'option 2'=>'option 2',
'option 3'=>'option 3',
),
)); ?>
これをデータベースにロードすると、文字列であるはずの配列を追加しようとしているため、「列が見つかりません:1054不明な列'配列'が'フィールドリスト'にあります」というエラーが返されます。
配列形式のいずれかを文字列に変換しようとしまし$this->request->data
たが、以前の形式の日付選択に干渉します(配列としても保存されます)。
また、複数のチェックボックスフィールドの値だけをモデルのメソッドの文字列に変換しようとしましたbeforeValidate()
が、繰り返しが多すぎて、データを「解凍」する必要があるときに面倒になります。
<?php class Request extends AppModel {
...
function beforeValidate() {
if(!empty($this->request->data['Request']['attachment_types'])) {
$this->data['Request']['attachment_types'] = implode(',', $this->data['Request']['attachment_types']);
}
if(!empty($this->request->data['Request']['report_types'])) {
$this->data['Request']['report_types'] = implode(',', $this->data['Request']['attachment_types']);
}
// Am I going to have to keep adding if-statements here?
}?>
さらに、!empty()
フィールドが空になることは決してないため、このメソッドは機能しません(CakePHPがチェックボックスを入力すると自動的に非表示のフィールドが作成されるため)。
複数のチェックボックス入力をデータベースに送信する方法について誰かがアイデアを持っていますか?かなり控えめなリクエストのようです...CakePHPにはこの点で「自動魔法」のスキルがありますか?