wip: refactor

This commit is contained in:
Björn Fromme
2026-03-16 11:59:09 +01:00
parent 4d51f0334f
commit 727ee9b014
+20 -2
View File
@@ -5,6 +5,7 @@ namespace App\Form;
use App\BusProNet\Constants; use App\BusProNet\Constants;
use App\BusProNet\Model\Service; use App\BusProNet\Model\Service;
use App\Form\Model\BookingEditDto; use App\Form\Model\BookingEditDto;
use App\Form\ParticipantFieldHandler\ParticipantFieldHandlerRegistry;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CollectionType; use Symfony\Component\Form\Extension\Core\Type\CollectionType;
use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
@@ -14,9 +15,19 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
class BookingEditType extends AbstractType class BookingEditType extends AbstractType
{ {
public function __construct(
private readonly ParticipantFieldHandlerRegistry $participantFieldHandlerRegistry,
) {}
public function buildForm(FormBuilderInterface $builder, array $options): void public function buildForm(FormBuilderInterface $builder, array $options): void
{ {
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) { $builder
->addEventListener(FormEvents::PRE_SET_DATA, [$this, 'onPreSetData'])
->addEventListener(FormEvents::PRE_SUBMIT, [$this, 'onPreSubmit']);
}
public function onPreSetData(FormEvent $event): void
{
/** @var BookingEditDto $data */ /** @var BookingEditDto $data */
$data = $event->getData(); $data = $event->getData();
$form = $event->getForm(); $form = $event->getForm();
@@ -44,7 +55,14 @@ class BookingEditType extends AbstractType
'allow_add' => false, 'allow_add' => false,
'allow_delete' => false, 'allow_delete' => false,
]); ]);
}); }
public function onPreSubmit(FormEvent $event): void
{
$form = $event->getForm();
$submittedData = $event->getData();
$bookingDto = $form->getData();
$this->participantFieldHandlerRegistry->processFields($submittedData, $bookingDto);
} }
private function mergeSelectableServices(BookingEditDto $data, string|array $subType): array private function mergeSelectableServices(BookingEditDto $data, string|array $subType): array