src/Infrastructure/CommonBundle/Form/Type/EntityHiddenType.php line 36

Open in your IDE?
  1. <?php
  2. namespace Whater\Infrastructure\CommonBundle\Form\Type;
  3. use Whater\Infrastructure\CommonBundle\Form\DataTransformer\ObjectToIdTransformer;
  4. use Doctrine\Persistence\ManagerRegistry;
  5. use Doctrine\Persistence\ObjectManager;
  6. use Symfony\Component\Form\AbstractType;
  7. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  8. use Symfony\Component\Form\FormBuilderInterface;
  9. use Symfony\Component\Form\Util\StringUtil;
  10. use Symfony\Component\OptionsResolver\OptionsResolver;
  11. /**
  12. * Class EntityHiddenType
  13. *
  14. * @package Whater\Infrastructure\CommonBundle\Form\Type
  15. */
  16. class EntityHiddenType extends AbstractType
  17. {
  18. /** @var ManagerRegistry */
  19. protected $registry;
  20. /**
  21. * @param ManagerRegistry $registry
  22. */
  23. public function __construct(ManagerRegistry $registry)
  24. {
  25. $this->registry = $registry;
  26. }
  27. /**
  28. * @inheritdoc
  29. */
  30. public function buildForm(FormBuilderInterface $builder, array $options)
  31. {
  32. $transformer = new ObjectToIdTransformer($this->registry, $options['em'], $options['class'], $options['property']);
  33. $builder->addModelTransformer($transformer);
  34. }
  35. /**
  36. * @inheritdoc
  37. */
  38. public function configureOptions(OptionsResolver $resolver)
  39. {
  40. $resolver->setRequired(['class']);
  41. $resolver->setDefaults([
  42. 'data_class' => null,
  43. 'invalid_message' => 'The entity does not exist.',
  44. 'property' => 'id',
  45. 'em' => 'default'
  46. ]);
  47. $resolver->setAllowedTypes('invalid_message', ['null', 'string']);
  48. $resolver->setAllowedTypes('property', ['null', 'string']);
  49. $resolver->setAllowedTypes('em', ['null', 'string', ObjectManager::class]);
  50. }
  51. /**
  52. * @inheritdoc
  53. */
  54. public function getParent()
  55. {
  56. return HiddenType::class;
  57. }
  58. /**
  59. * @inheritdoc
  60. */
  61. public function getBlockPrefix()
  62. {
  63. return 'whater_' . StringUtil::fqcnToBlockPrefix(get_class($this));
  64. }
  65. /**
  66. * @return string
  67. */
  68. public function getName()
  69. {
  70. return $this->getBlockPrefix();
  71. }
  72. }