我有在可具有多個值的CakePHP的形式的複選框。在視圖: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在這方面有什麼「automagic」技能?
你是什麼「report_types」列的數據類型?一個集合,或一個varchar被濫用爲集合?在這種情況下,我認爲這是去(我碰到了同樣的問題)的唯一途徑 – JvO
嗨,於麻醉!感謝您的答覆。我已經將數據類型更改爲一個集合(由複選框選項的值定義)並將該數組傳遞給數據庫 - 但仍然收到相同的錯誤。是否有一些額外的步驟我失蹤?我需要以某種方式序列化數據嗎? – CSamp
是的,你必須自己序列化它。在重新閱讀我的評論時,我意識到它不是很清楚。無論如何,將它改成一個集合都無濟於事(不要與Cake一起);我的意思是說我也必須使用內爆/爆炸功能。還要注意一個集合不是標準的SQL,而是一個MySQL擴展。 – JvO