CakePHP Поля не обновляются на странице редактирования - PullRequest
0 голосов
/ 11 марта 2012

Я работал с cakephp и смог создать несколько простых моделей и отношений.Я специально пытался реализовать ассоциацию hasMany.Моя проблема связана с попыткой обновить дочерние элементы.

Для целей моего примера я предполагаю, что у меня есть класс модели «Родитель» и «Ребенок».Я могу создавать для просмотра и добавлять страницы без каких-либо проблем.Тем не менее, я не имею такой же успех на странице редактирования.На странице редактирования я могу отображать как родительские, так и дочерние поля.Однако, когда я иду, чтобы сохранить форму, вместо обновления дочерних элементов, она просто добавляет эти строки в дополнение к существующим.Я не уверен, почему это происходит.Я где-то пропускаю параметр?

Это мой код для страницы редактирования

echo $this->Form->create('Parent', array('action' => 'edit'));
echo $this->Form->input('title');
echo $this->Form->input('body', array('rows' => '3'));
echo $this->Form->input('id', array('type' => 'hidden'));

$x = 0;
foreach($this->request->data['Child'] as $child){
    print $this->Form->input("Child.$x.name");
    $x++;
}

И это функция редактирования в моем ParentController

   public function edit($id = null) {
    $this->Parent->id = $id;
    if ($this->request->is('get')) {
        $this->request->data = $this->Parent->read();
        } else {
            if ($this->Parent->saveAll($this->request->data)) {
                $this->Session->setFlash('Your post has been updated.');
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash('Unable to update');
            }
        }
}

1 Ответ

0 голосов
/ 11 марта 2012

Попробуйте вставить это до saveAll:

Я знаю, что при сохранении нескольких связанных данных вам необходимо подтвердить, какой идентификатор будет использоваться.

unset($this->Parent->Child->validate['parent_id']);

Ресурсы: http://book.cakephp.org/1.3/view/1031/Saving-Your-Data

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...