vendor/shapecode/hidden-entity-type-bundle/src/Form/Type/HiddenObjectType.php line 30

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Shapecode\Bundle\HiddenEntityTypeBundle\Form\Type;
  4. use Doctrine\Persistence\ManagerRegistry;
  5. use Shapecode\Bundle\HiddenEntityTypeBundle\Form\DataTransformer\ObjectsToIdTransformer;
  6. use Shapecode\Bundle\HiddenEntityTypeBundle\Form\DataTransformer\ObjectToIdTransformer;
  7. use Symfony\Component\Form\AbstractType;
  8. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  9. use Symfony\Component\Form\FormBuilderInterface;
  10. use Symfony\Component\OptionsResolver\OptionsResolver;
  11. use function assert;
  12. use function is_string;
  13. class HiddenObjectType extends AbstractType
  14. {
  15.     protected ManagerRegistry $registry;
  16.     public function __construct(ManagerRegistry $registry)
  17.     {
  18.         $this->registry $registry;
  19.     }
  20.     /**
  21.      * @param array<string, mixed> $options
  22.      */
  23.     public function buildForm(FormBuilderInterface $builder, array $options): void
  24.     {
  25.         $transformerClassName $options['multiple'] === true ObjectsToIdTransformer::class : ObjectToIdTransformer::class;
  26.         /** @phpstan-var class-string $class */
  27.         $class $options['class'];
  28.         $property $options['property'];
  29.         assert(is_string($property));
  30.         $transformer = new $transformerClassName(
  31.             $this->registry,
  32.             $class,
  33.             $property
  34.         );
  35.         $builder->addModelTransformer($transformer);
  36.     }
  37.     public function configureOptions(OptionsResolver $resolver): void
  38.     {
  39.         $resolver->setRequired(['class']);
  40.         $resolver->setDefaults([
  41.             'multiple'        => false,
  42.             'data_class'      => null,
  43.             'invalid_message' => 'The object does not exist.',
  44.             'property'        => 'id',
  45.         ]);
  46.         $resolver->setAllowedTypes('invalid_message', ['null''string']);
  47.         $resolver->setAllowedTypes('property', ['string']);
  48.         $resolver->setAllowedTypes('multiple', ['boolean']);
  49.     }
  50.     public function getParent(): string
  51.     {
  52.         return HiddenType::class;
  53.     }
  54.     public function getBlockPrefix(): string
  55.     {
  56.         return 'shapecode_hidden_object';
  57.     }
  58. }