У меня проблема с 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 в конец формы, некоторые поля моего дочернего типа исчезают ... Если у вас есть идея причины, по которой дескриптор дескриптора удаляет данные в субформе? Заранее благодарен Эрве