-
Symfony - Form Frage
Hallo, hoffe sowas ist hier auch okay.
Hier gibt es anscheind ja auch paar Profis :)
ich habe ein Formular mit 3 Selects, diese werden nach und nach dynamisch gefüllt. Das klappt auch alles. Nur das beim letzten Select wird die liste beim abschicken wieder gelöscht.
PHP-Code:
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('band', EntityType::class, [
'class' => Bands::class,
'choice_label' => 'title',
'placeholder' => 'Wähle eine Band',
])
->add('tour', EntityType::class, [
'class' => Tourneen::class,
'choice_label' => 'title',
'placeholder' => 'Wähle eine Band',
])
->add('concert', EntityType::class, [
'class' => Concerts::class,
'choice_label' => 'alias',
'placeholder' => 'Wähle eine Band',
]);
//tour
$formModifier = function (FormInterface $form, ?Bands $band = null): void {
$tourneen = null === $band ? [] : $band->getTourneens();
$form->add('tour', EntityType::class, [
'class' => Tourneen::class,
'choice_label' => 'title',
'placeholder' => 'Tour',
'choices' => $tourneen,
]);
};
//concert
$formModifierConcerts = function (FormInterface $form, ?Tourneen $tour = null): void {
$concerts = null === $tour ? [] : $tour->getConcerts();
$form->add('concert', EntityType::class, [
'class' => Concerts::class,
'choice_label' => 'alias',
'placeholder' => 'Concert',
'choices' => $concerts,
]);
};
//lädt die daten für edit
$builder->addEventListener(FormEvents::POST_SET_DATA, function (FormEvent $event) use ($formModifier): void {
$data = $event->getData();
$formModifier($event->getForm(), $data->getBand());
});
$builder->addEventListener(FormEvents::POST_SET_DATA, function (FormEvent $event) use ($formModifierConcerts): void {
$data2 = $event->getData();
$formModifierConcerts($event->getForm(), $data2->getTour());
});
//lädt die daten für edit
$builder->get('band')->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) use ($formModifier): void {
$band = $event->getForm()->getData();
$formModifier($event->getForm()->getParent(), $band);
});
$builder->get('tour')->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) use ($formModifierConcerts): void {
$tour = $event->getForm()->getData();
dump($tour);
$formModifierConcerts($event->getForm()->getParent(), $tour);
});
$builder->add('save', SubmitType::class, ['label' => 'Speichern', 'attr' => ['class' => 'btn btn-secondary btn-sm']]);
}
Das dump($tour); ist immer null, das problem trittt auch nur beim anlegen von datensätzen auf, im edit-controller funktiniert es