添加记录时,我让用户标记尽可能多的复选框并需要:
echo $this->Form->input('us_roles', array('label' => 'Roles:', 'type'=> 'select', 'multiple'=>'checkbox','options' => $arr_pr_role));
并将选定的索引存储到我的 bd 上的字符串字段中,没有问题。(它可以节省例如 1,2,3)
但是,在编辑该记录时,复选框不会被填充-选中-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']);
}