From 741ed84918b652fa6897ebc2f1eef53cb74defee Mon Sep 17 00:00:00 2001 From: Mathieu Jaumotte Date: Fri, 28 May 2021 22:59:56 +0200 Subject: [PATCH] formType transform string id in entities, wip --- .../ChillActivityBundle/Form/ActivityType.php | 86 +++++++++++-------- 1 file changed, 50 insertions(+), 36 deletions(-) diff --git a/src/Bundle/ChillActivityBundle/Form/ActivityType.php b/src/Bundle/ChillActivityBundle/Form/ActivityType.php index ddebcc741..a04a4a0a9 100644 --- a/src/Bundle/ChillActivityBundle/Form/ActivityType.php +++ b/src/Bundle/ChillActivityBundle/Form/ActivityType.php @@ -30,6 +30,10 @@ use Chill\MainBundle\Form\Type\UserPickerType; use Chill\MainBundle\Form\Type\ScopePickerType; use Chill\MainBundle\Form\Type\ChillDateType; +use Symfony\Component\Form\Extension\Core\Type\HiddenType; +use Symfony\Component\Form\CallbackTransformer; +use Chill\PersonBundle\Form\DataTransformer\PersonToIdTransformer; + class ActivityType extends AbstractType { protected User $user; @@ -161,34 +165,42 @@ class ActivityType extends AbstractType if ($activityType->isVisible('persons')) { // TODO Faire évoluer le selecteur et la query <= - $builder->add('persons', EntityType::class, [ - 'label' => $activityType->getLabel('persons'), - 'required' => $activityType->isRequired('persons'), - 'class' => Person::class, - 'multiple' => true, - 'choice_label' => function (Person $person) { - return $person->getFullnameCanonical(); - }, - 'query_builder' => function (EntityRepository $er) { - return $er->createQueryBuilder('a'); - }, - ]); + $builder->add('persons', HiddenType::class); + $builder->get('persons') + //->addModelTransformer(new PersonToIdTransformer($this->om)); + + ->addModelTransformer(new CallbackTransformer( + function ($personsAsArray) { + dump('personsAsArray', $personsAsArray); //Doctrine\Common\Collections\ArrayCollection + // transform the array to a string + //return implode(',', $personsAsArray); + return $personsAsArray; + }, + function ($personsAsString) { + dump('personsAsString', $personsAsString); //"1188,1259,1229,1223" + // transform the string back to an array + return explode(',', $personsAsString); + } + )) + ; } if ($activityType->isVisible('thirdParties')) { // TODO Faire évoluer le selecteur et la query <= - $builder->add('thirdParties', EntityType::class, [ - 'label' => $activityType->getLabel('thirdParties'), - 'required' => $activityType->isRequired('thirdParties'), - 'class' => ThirdParty::class, - 'multiple' => true, - 'choice_label' => function (ThirdParty $thirdParty) { - return $thirdParty->getName(); - }, - 'query_builder' => function (EntityRepository $er) { - return $er->createQueryBuilder('a'); - }, - ]); + $builder->add('thirdParties', HiddenType::class, []); + $builder->get('thirdParties') + ->addModelTransformer(new CallbackTransformer( + function ($personsAsArray) { + // transform the array to a string + //return implode(',', $personsAsArray); + return $personsAsArray; + }, + function ($personsAsString) { + // transform the string back to an array + return explode(',', $personsAsString); + } + )) + ; } if ($activityType->isVisible('documents')) { @@ -202,18 +214,20 @@ class ActivityType extends AbstractType if ($activityType->isVisible('users')) { // TODO Faire évoluer le selecteur et la query <= - $builder->add('users', EntityType::class, [ - 'label' => $activityType->getLabel('users'), - 'required' => $activityType->isRequired('users'), - 'class' => User::class, - 'multiple' => true, - 'choice_label' => function (User $user) { - return $user->getUsername(); - }, - 'query_builder' => function (EntityRepository $er) { - return $er->createQueryBuilder('u'); - }, - ]); + $builder->add('users', HiddenType::class, []); + $builder->get('users') + ->addModelTransformer(new CallbackTransformer( + function ($personsAsArray) { + // transform the array to a string + //return implode(',', $personsAsArray); + return $personsAsArray; + }, + function ($personsAsString) { + // transform the string back to an array + return explode(',', $personsAsString); + } + )) + ; } if ($activityType->isVisible('emergency')) {