用繩子checboxes當添加一條記錄,我讓用戶標記儘可能多的複選框,需要:CakePHP的選擇DB
echo $this->Form->input('us_roles', array('label' => 'Roles:', 'type'=> 'select', 'multiple'=>'checkbox','options' => $arr_pr_role));
和存儲選擇索引字符串字段在我的BD沒有問題。 (它保存例如1,2,3)
但是,在編輯該記錄時,複選框不會被填充-selected-accodingly。 (基於字符串文本,例如,1,2,3
我怎麼能有我的checkboxex反映存儲在一個數據庫中的字符串值?
我的編輯視圖使用同我添加視圖:
echo $this->Form->input('us_roles', array('label' => 'Roles:', 'type'=> 'select', 'multiple'=>'checkbox','options' => $arr_pr_role));
* *更多細節
當添加一個新的記錄,我爆從選擇中的選擇到我的數據:
$this->request->data['User']['us_roles'] = implode(",", $this->request->data['User']['us_roles']);
保存已編輯的記錄時是同樣的事情。
問題是檢索後,如何將字符串轉換爲我的us_roles輸入?
echo $this->Form->input('us_roles', array('label' => 'Roles:', 'type'=> 'select', 'multiple'=>'checkbox','options' => $arr_pr_role));
你能幫忙嗎?
---更新,固定---
public function edit($id = null) {
$this->User->id = $id;
if (!$this->User->exists()) {
throw new NotFoundException(__('Invalid user'));
}
if ($this->request->is('post') || $this->request->is('put')) {
$this->request->data['User']['us_roles'] = implode(",", $this->request->data['User']['us_roles']);
if ($this->User->save($this->request->data)) {
...
} else {
$this->request->data = $this->User->read(null, $id);
$this->request->data['User']['us_roles'] = explode(",", $this->request->data['User']['us_roles']);
}
你如何讀取數據並將其傳遞給你的編輯表單?你如何填充'$ this-> request-> data'數組可以這麼說? – mark
thx @mark,請參閱最新問題的底部。 –
你爲什麼會內爆?對於選擇表單字段,這絕不是一個好主意。 – mark