レコードを追加するとき、ユーザーが必要な数のチェックボックスをマークできるようにしました。
echo $this->Form->input('us_roles', array('label' => 'Roles:', 'type'=> 'select', 'multiple'=>'checkbox','options' => $arr_pr_role));
選択したインデックスをBDの文字列フィールドに問題なく保存します。(例: 1,2,3 が保存されます)
ただし、そのレコードを編集するとき、チェックボックスは適切に設定されていない - 選択されています。(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']);
}