私はcakephpの初心者です。「ユーザー」テーブルと「カテゴリ」テーブルがあります
ユーザーの所属カテゴリ (フィールド: users.id、users.name、users.category) カテゴリ hasMany users (フィールド: category.id、category.name、users.category)
このような関連付けデータに対処しています。
(ユーザー)edit.ctpに入れました
// view/Users/edit.ctp
echo $this->Form->input('name');
echo $this->Form->input('categories', array( 'value' => $this->Form->value('User.category'),
'name'=>'data[User][category]') );
</pre>
in users controller I have
<pre>
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')) {
if ($this->User->save($this->request->data)) {
$this->Session->setFlash(__('The user has been saved'));
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The user could not be saved. Please, try again.'));
}
} else {
$this->request->data = $this->User->read(null, $id);
}
$sexes = $this->User->Sex->find('list');
$categories = $this->User->Category->find('list');
$this->set(compact('categories'));
}
すべてが機能していますが、そのフォームを実行するためのはるかに簡単な方法があると思います。これは本当に必要ですか?
, array( 'value' => $this->Form->value('User.category'), 'name'=>'data[User][category]')
これらのパラメーターがないと、選択ボックスは選択したものを強調表示しませんオプションで、何も保存されません。
次のようなものかもしれません
echo $this->Form->input('Category.name');
例えば?しかし、そのようなコードは選択ボックスを表示しません。
users.category フィールドは保存されません。
これに関するサンプルを含むチュートリアルやコードを見つけることができませんでした。リンクをいただければ幸いです。