<?php
namespace Backend\Modules\Editions\Domain\Registration;
use Symfony\Component\Form\CallbackTransformer;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class LegalFormType extends ChoiceType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
parent::buildForm($builder, $options);
$builder
->addModelTransformer(
new CallbackTransformer(
static function (?LegalForm $legalForm): ?string {
if (!$legalForm instanceof LegalForm) {
return null;
}
return (string) $legalForm;
},
static function (?string $legalForm): ?LegalForm {
if ($legalForm === null) {
return null;
}
try {
return new LegalForm($legalForm);
} catch (InvalidLegalForm $exception) {
return null;
}
}
)
)
;
}
public function configureOptions(OptionsResolver $resolver): void
{
parent::configureOptions($resolver);
$resolver->setDefaults(
[
'choices' => array_combine(LegalForm::POSSIBLE_VALUES, LegalForm::POSSIBLE_VALUES),
'multiple' => false,
'expanded' => false,
]
);
}
}