Я новичок в 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.
Мне не удалось найти учебник или код с примерами по этому поводу. Ссылки приветствуются.