У меня есть отношение OneToMany
между двумя объектами, и я создал связанную с ним форму, но кажется, что FormBuilder
после отправки данных не видит детей из организация.
Родитель класс:Symfony: Form Builder не получает вход OneToMany
class Parent{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/**
* @ORM\OneToMany(targetEntity="Child",mappedBy="parent",cascade={"persist", "remove"})
* @ORM\JoinColumn(nullable=false)
*/
private $children;
}
Детский класс:
class Child{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/**
* @ORM\ManyToOne(targetEntity="Parent", inversedBy="children")
*/
private $parent;
}
Это FormTypes:
class ParentType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('name')
->add('children', CollectionType::class, array(
'entry_type' => ChildType::class,
'allow_add' => true
));
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Bundle\Entity\Parent'
));
}
}
Детский FormType:
class ChildType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('name');
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Bundle\Entity\Child'
));
}
}
После этого я создал свою форму внутри контроллера, как это:
function saveAction(Request $request){
$parent = new Parent();
$form = $this->createForm('Bundle\Form\ParentType', $parent);
$form->handleRequest($request);
if ($form->isSubmitted()) {
//--after submitted the form I just want to display the children
die(var_dump($parent->getChildren()));
}
}
Конечно я создаю детей с помощью JQuery из данных-прототипа, предоставленной Symfony-х FormBuilder
, но форма не видит их !!
Что мне здесь не хватает?
Вы можете использовать свойство 'query_builder', как показано здесь: [Полный пример CRUD в стиле веб-формы с встроенным связанным объектом в symfony] (http://www.inanzzz.com/index.php/post/djrc/full-webform -style-crud-example-with-in-embedded-associated-entity-in-symfony) – BentCoder