From a23c0bad155f1ad38958d0ef32cf4d9f1049639a Mon Sep 17 00:00:00 2001 From: Rastislav Brandobur Date: Mon, 25 Mar 2024 16:47:31 +0100 Subject: [PATCH] fix: fixed driving licenses (#27) --- src/Entity/EuropeanCVDrivingLicense.php | 6 +++--- .../Parts/EuropeanCVPartDrivingLicenseType.php | 16 +++++++--------- src/Form/Type/DrivingLicenseType.php | 2 -- src/Form/Type/EuropeanCVDrivingLicenseType.php | 15 ++++++++++++--- 4 files changed, 22 insertions(+), 17 deletions(-) diff --git a/src/Entity/EuropeanCVDrivingLicense.php b/src/Entity/EuropeanCVDrivingLicense.php index 01f88e3..05990d7 100644 --- a/src/Entity/EuropeanCVDrivingLicense.php +++ b/src/Entity/EuropeanCVDrivingLicense.php @@ -35,7 +35,7 @@ class EuropeanCVDrivingLicense 'comment' => 'Distance traveled in kilometers' ], )] - private ?string $distanceTraveled = null; + private ?int $distanceTraveled = null; #[ORM\Column(type: 'boolean')] private ?bool $activeDriver = null; @@ -69,12 +69,12 @@ public function setDrivingLicense(?DrivingLicenseEnum $drivingLicense): self return $this; } - public function getDistanceTraveled(): ?string + public function getDistanceTraveled(): ?int { return $this->distanceTraveled; } - public function setDistanceTraveled(?string $distanceTraveled): self + public function setDistanceTraveled(?int $distanceTraveled): self { $this->distanceTraveled = $distanceTraveled; diff --git a/src/Form/Parts/EuropeanCVPartDrivingLicenseType.php b/src/Form/Parts/EuropeanCVPartDrivingLicenseType.php index da04b2b..ca3e339 100644 --- a/src/Form/Parts/EuropeanCVPartDrivingLicenseType.php +++ b/src/Form/Parts/EuropeanCVPartDrivingLicenseType.php @@ -5,6 +5,8 @@ use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\CheckboxType; use Symfony\Component\Form\FormBuilderInterface; +use Symfony\Component\Form\FormInterface; +use Symfony\Component\Form\FormView; use Symfony\Component\OptionsResolver\OptionsResolver; use Trexima\EuropeanCvBundle\Entity\EuropeanCV; use Trexima\EuropeanCvBundle\Form\Type\DrivingLicenseType; @@ -22,13 +24,6 @@ class EuropeanCVPartDrivingLicenseType extends AbstractType */ public function buildForm(FormBuilderInterface $builder, array $options): void { - $entity = $builder->getData(); - - $drivingLicenses = []; - foreach ($entity->getDrivingLicenses() as $drivingLicense) { - $drivingLicenses[] = $drivingLicense->getDrivingLicense()->value; - } - $builder ->add('drivingLicenseOwner', CheckboxType::class, [ 'required' => false, @@ -53,11 +48,14 @@ public function buildForm(FormBuilderInterface $builder, array $options): void ] ], 'required' => false, - 'hidden' => empty($entity?->getDrivingLicenseOwner()), - 'existing_licenses' => $drivingLicenses, ]); } + public function finishView(FormView $view, FormInterface $form, array $options) + { + $view->children['drivingLicenses']->vars['hidden'] = !$form->getData()?->getDrivingLicenseOwner(); + } + /** * {@inheritdoc} */ diff --git a/src/Form/Type/DrivingLicenseType.php b/src/Form/Type/DrivingLicenseType.php index e0fbe15..9411d5e 100644 --- a/src/Form/Type/DrivingLicenseType.php +++ b/src/Form/Type/DrivingLicenseType.php @@ -69,7 +69,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'attr' => [ 'class' => 'form-inline' ], - 'existing_licenses' => $options['existing_licenses'] ], $options['entry_options']) ); } @@ -122,7 +121,6 @@ public function configureOptions(OptionsResolver $resolver) 'entry_options' => [ 'required' => false, ], - 'existing_licenses' => [] ]); } diff --git a/src/Form/Type/EuropeanCVDrivingLicenseType.php b/src/Form/Type/EuropeanCVDrivingLicenseType.php index ea3da57..7df4711 100644 --- a/src/Form/Type/EuropeanCVDrivingLicenseType.php +++ b/src/Form/Type/EuropeanCVDrivingLicenseType.php @@ -9,6 +9,7 @@ use Symfony\Component\Form\FormInterface; use Symfony\Component\Form\FormView; use Symfony\Component\OptionsResolver\OptionsResolver; +use Symfony\Component\Validator\Constraints as Assert; use Trexima\EuropeanCvBundle\Entity\Enum\DrivingLicenseEnum; use Trexima\EuropeanCvBundle\Entity\EuropeanCVDrivingLicense; @@ -44,12 +45,13 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'required' => false, 'attr' => [ 'placeholder' => t('trexima_european_cv.form_label.driving_license_distance_traveled_placeholder', [], 'trexima_european_cv') ], - 'hidden' => !in_array($drivingLicense->value, $options['existing_licenses']) + 'constraints' => [ + new Assert\Range(min: 0, max: 2 ** 32 - 1), + ], ]) ->add('activeDriver', CheckboxType::class, [ 'label' => t('trexima_european_cv.form_label.driving_license_active_driver_label', [], 'trexima_european_cv'), 'required' => false, - 'hidden' => !in_array($drivingLicense->value, $options['existing_licenses']) ]) ; @@ -82,6 +84,14 @@ public function buildView(FormView $view, FormInterface $form, array $options) $view->vars['driving_license'] = $options['driving_license']; } + public function finishView(FormView $view, FormInterface $form, array $options) + { + $drivingLicense = $form->getData()?->getDrivingLicense(); + + $view->children['distanceTraveled']->vars['hidden'] = !$drivingLicense; + $view->children['activeDriver']->vars['hidden'] = !$drivingLicense; + } + /** * {@inheritdoc} */ @@ -90,7 +100,6 @@ public function configureOptions(OptionsResolver $resolver) parent::configureOptions($resolver); $resolver->setDefaults([ 'data_class' => EuropeanCVDrivingLicense::class, - 'existing_licenses' => [] ]); $resolver->setRequired([