handlerequest удаляет некоторые ассоциации данных - PullRequest
0 голосов
/ 30 апреля 2020

У меня проблема с Symfony формой. Я хочу, чтобы форма превратилась в l oop, пока пользователь не нажимает кнопку «выход» (упрощенная задача). Каждый раз меняется статус объекта. У меня есть объект Entity с ассоциациями OneToMany с дочерним объектом, поэтому я добавляю коллекцию для рендеринга экземпляров ChildType в родительской форме ObjectType. У меня есть такой buidler формы:

// src/form/ObjectType.phpclass ObjectType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {       
        $builder->add('name',null);
        $builder->add('status',null);
        $builder->add('children',CollectionType::class,
                            [
                                'entry_type' => ChildType::class,
                                'entry_options' => ['label' => false],
                            ]);
    }
}

Я обрабатываю запросы формы с такого рода и упрощенное действие контроллера

/**
 * @Route("/form", name="form")
 */
public function form(Request $request, $id=null){
    $object = null;
    if($id == null)
        $object=$this->getObjectFromDoctrine($id);
    if(!$object){
        $object = new object();
    }
    $form = $this->createForm(ObjectType::class, $object);
    dump($object);
    $form->handleRequest($object);
    dump($object);
    if ($form->isSubmitted() && $form->isValid()) {
        $object = $form->getData();
        // changing status step by step
        // ....
        // when user has finished every steps, click on exit
        if($form->getClickedButtons()->getNames() == 'exit')
            return $this->render('homepage',['object'=>$object]);
        // else
        // regenerating the form with updated $object and status
        $form = $this->createForm(ObjectType::class, $object);
    }
    return $this->render('form', [
        'form'=>$form->createView()
    ]);
}

Моя проблема в том, что во втором дампе ($ object) и так сразу после handlerequest объект $ потерял несколько полей объектов Children, даже если поля отображается в форме в первый раз. При повторном отображении формы во второй раз поля становятся пустыми, поскольку $ object потерял дочерние данные после handleRequest ... Я не понимаю, почему. Событие, когда я помещаю 'render_rest': true в конец формы, некоторые поля моего дочернего типа исчезают ... Если у вас есть идея причины, по которой дескриптор дескриптора удаляет данные в субформе? Заранее благодарен Эрве

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