Я пытаюсь реализовать динамическую форму с Symfony 4.3 на основе официальной документации.
Для упрощения у меня есть 3 сущности: продукт, категория и подкатегория, связанные друг с другом отношениями OneToMany, следующим образом:категория может иметь несколько подкатегорий, а подкатегория может иметь несколько продуктов. При выборе категории (например, спорт) я хотел, чтобы список спортивных подкатегорий отображался в следующем поле.
class ProductType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('nom')
->add('categorie', EntityType::class, [
'class' => 'App\Entity\Categorie',
//'placeholder' => '',
])
;
$formModifier = function (FormInterface $form, Categorie $categorie = null) {
$subcategories = null === $categorie ? [] : $categorie->getSubcategories();
//var_dump($subcategories);
$form->add('subcategorie', EntityType::class, [
'class' => 'App\Entity\Subcategorie',
//'placeholder' => '',
'choices' => $subcategories,
]);
};
$builder->addEventListener(
FormEvents::PRE_SET_DATA,
function (FormEvent $event) use ($formModifier) {
// this would be your entity
$data = $event->getData();
//var_dump($data);
//die;
$formModifier($event->getForm(), $data->getCategorie());
}
);
$builder->get('categorie')->addEventListener(
FormEvents::POST_SUBMIT,
function (FormEvent $event) use ($formModifier) {
$categorie = $event->getForm()->getData();
$formModifier($event->getForm()->getParent(), $categorie);
}
);
//...
}
Меня беспокоит то, что я не могу получить значение своих дампов ($data и $ subcategories): они всегда равны NULL. Поэтому я не могу найти свои подкатегории в форме.
Я спрашиваю, потому что я действительно заблокирован на некоторое время, и я не могу найти ошибку в этом коде на основе документации Symfony.