From 9e2208f29cd1d6bfe1b8fe98c8c9bb2f2b165e95 Mon Sep 17 00:00:00 2001 From: Julie Lenaerts Date: Fri, 21 Jan 2022 15:53:52 +0100 Subject: [PATCH] different dynamic entity picker types created --- .../EntityToJsonTransformer.php | 6 +- .../Form/Type/PickUserDynamicType.php | 5 +- .../Resources/views/Form/fields.html.twig | 2 +- .../Form/Type/PickPersonDynamicType.php | 62 +++++++++++++++++++ .../Form/Type/PickThirdpartyDynamicType.php | 62 +++++++++++++++++++ 5 files changed, 131 insertions(+), 6 deletions(-) create mode 100644 src/Bundle/ChillPersonBundle/Form/Type/PickPersonDynamicType.php create mode 100644 src/Bundle/ChillThirdPartyBundle/Form/Type/PickThirdpartyDynamicType.php diff --git a/src/Bundle/ChillMainBundle/Form/Type/DataTransformer/EntityToJsonTransformer.php b/src/Bundle/ChillMainBundle/Form/Type/DataTransformer/EntityToJsonTransformer.php index b79ddc880..6431867e4 100644 --- a/src/Bundle/ChillMainBundle/Form/Type/DataTransformer/EntityToJsonTransformer.php +++ b/src/Bundle/ChillMainBundle/Form/Type/DataTransformer/EntityToJsonTransformer.php @@ -19,7 +19,7 @@ use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; use Symfony\Component\Serializer\SerializerInterface; use function array_key_exists; -class UserToJsonTransformer implements DataTransformerInterface +class EntityToJsonTransformer implements DataTransformerInterface { private DenormalizerInterface $denormalizer; @@ -81,8 +81,8 @@ class UserToJsonTransformer implements DataTransformerInterface return $this->denormalizer->denormalize( - ['type' => $this->type, 'id' => $item['id']], - User::class, + ['type' => $item['type'], 'id' => $item['id']], + $this->type, 'json', [AbstractNormalizer::GROUPS => ['read']], ); diff --git a/src/Bundle/ChillMainBundle/Form/Type/PickUserDynamicType.php b/src/Bundle/ChillMainBundle/Form/Type/PickUserDynamicType.php index 52798608e..ec7590992 100644 --- a/src/Bundle/ChillMainBundle/Form/Type/PickUserDynamicType.php +++ b/src/Bundle/ChillMainBundle/Form/Type/PickUserDynamicType.php @@ -12,6 +12,7 @@ declare(strict_types=1); namespace Chill\MainBundle\Form\Type; use Chill\MainBundle\Entity\User; +use Chill\MainBundle\Form\Type\DataTransformer\EntityToJsonTransformer; use Chill\MainBundle\Form\Type\DataTransformer\UserToJsonTransformer; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; @@ -38,7 +39,7 @@ class PickUserDynamicType extends AbstractType public function buildForm(FormBuilderInterface $builder, array $options) { - $builder->addViewTransformer(new UserToJsonTransformer($this->denormalizer, $this->serializer, $options['multiple'])); + $builder->addViewTransformer(new EntityToJsonTransformer($this->denormalizer, $this->serializer, $options['multiple'], 'user')); } public function buildView(FormView $view, FormInterface $form, array $options) @@ -58,6 +59,6 @@ class PickUserDynamicType extends AbstractType public function getBlockPrefix() { - return 'pick_user_dynamic'; + return 'pick_entity_dynamic'; } } diff --git a/src/Bundle/ChillMainBundle/Resources/views/Form/fields.html.twig b/src/Bundle/ChillMainBundle/Resources/views/Form/fields.html.twig index 25f1363c3..8bb09623f 100644 --- a/src/Bundle/ChillMainBundle/Resources/views/Form/fields.html.twig +++ b/src/Bundle/ChillMainBundle/Resources/views/Form/fields.html.twig @@ -216,7 +216,7 @@ {% endif %} {% endblock %} -{% block pick_user_dynamic_widget %} +{% block pick_entity_dynamic_widget %}
{% endblock %} diff --git a/src/Bundle/ChillPersonBundle/Form/Type/PickPersonDynamicType.php b/src/Bundle/ChillPersonBundle/Form/Type/PickPersonDynamicType.php new file mode 100644 index 000000000..41c90406f --- /dev/null +++ b/src/Bundle/ChillPersonBundle/Form/Type/PickPersonDynamicType.php @@ -0,0 +1,62 @@ +denormalizer = $denormalizer; + $this->serializer = $serializer; + } + + public function buildForm(FormBuilderInterface $builder, array $options) + { + $builder->addViewTransformer(new EntityToJsonTransformer($this->denormalizer, $this->serializer, $options['multiple'], 'person')); + } + + public function buildView(FormView $view, FormInterface $form, array $options) + { + $view->vars['multiple'] = $options['multiple']; + $view->vars['types'] = ['person']; + $view->vars['uniqid'] = uniqid('pick_user_dyn'); + } + + public function configureOptions(OptionsResolver $resolver) + { + $resolver + ->setDefault('multiple', false) + ->setAllowedTypes('multiple', ['bool']) + ->setDefault('compound', false); + } + + public function getBlockPrefix() + { + return 'pick_entity_dynamic'; + } +} diff --git a/src/Bundle/ChillThirdPartyBundle/Form/Type/PickThirdpartyDynamicType.php b/src/Bundle/ChillThirdPartyBundle/Form/Type/PickThirdpartyDynamicType.php new file mode 100644 index 000000000..7c2fbff4f --- /dev/null +++ b/src/Bundle/ChillThirdPartyBundle/Form/Type/PickThirdpartyDynamicType.php @@ -0,0 +1,62 @@ +denormalizer = $denormalizer; + $this->serializer = $serializer; + } + + public function buildForm(FormBuilderInterface $builder, array $options) + { + $builder->addViewTransformer(new EntityToJsonTransformer($this->denormalizer, $this->serializer, $options['multiple'], 'thirdparty')); + } + + public function buildView(FormView $view, FormInterface $form, array $options) + { + $view->vars['multiple'] = $options['multiple']; + $view->vars['types'] = ['thirdparty']; + $view->vars['uniqid'] = uniqid('pick_user_dyn'); + } + + public function configureOptions(OptionsResolver $resolver) + { + $resolver + ->setDefault('multiple', false) + ->setAllowedTypes('multiple', ['bool']) + ->setDefault('compound', false); + } + + public function getBlockPrefix() + { + return 'pick_entity_dynamic'; + } +}