Перенести данные в режим редактирования Cakephp 3

#cakephp #cakephp-3.0

#cakephp #cakephp-3.0

Вопрос:

Я не могу получить данные «Контакта», отображаемые в форме редактирования. В режиме редактирования он показывает мне данные о добровольцах и людях, но не данные о контактах. Чтобы перенести данные, я должен изменить «echo $ this-> Form-> input (‘direccion’);» на echo $ this-> Form-> input (‘persona.contacto.direccion’); но при этом контактная форма не сохраняется. Каково решение?

В моей форме

 echo $this->Form->input('direccion'); echo $this->Form->input('persona.nombre'); echo $this->Form->input('persona.voluntario.cv');
  

В моей функции редактировать контроллер

 $particulare = $this->Particulares->get($id, [
        'contain' => ['Voluntarios','Beneficiarios','Personas'=>['Contactos'=>['Paises','Provincias','Localidades']]]
    ]);


    if ($this->request->is(['patch', 'post', 'put'])) {
        $particulare = $this->Particulares->patchEntity($particulare, $this->request->getData());


        if ($this->Particulares->save($particulare)) {
            $this->Flash->success(__('Éxito! Los cambios han sido guardados correctamente'));

            return $this->redirect(['action' => 'index']);
        }
        $this->Flash->error(__('Los cambios no pudieron ser guardados. Por favor, inténtelo de nuevo.'));
    }
  

Ответ №1:

Как сказано в руководстве, «По умолчанию метод save() также сохранит один уровень ассоциаций». Вы пытаетесь сохранить второй уровень ассоциаций, поэтому «При создании форм, которые сохраняют вложенные ассоциации, вам необходимо определить, какие ассоциации следует упорядочить». Итак, ваша инструкция patch должна выглядеть примерно так:

 $particulare = $this->Particulares->patchEntity($particulare, $this->request->getData(),
    'associated' => ['Voluntarios', 'Personas.Contactos']
);