formType transform string id in entities, wip

This commit is contained in:
Mathieu Jaumotte 2021-05-28 22:59:56 +02:00
parent 5822736f19
commit 741ed84918

View File

@ -30,6 +30,10 @@ use Chill\MainBundle\Form\Type\UserPickerType;
use Chill\MainBundle\Form\Type\ScopePickerType; use Chill\MainBundle\Form\Type\ScopePickerType;
use Chill\MainBundle\Form\Type\ChillDateType; 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 class ActivityType extends AbstractType
{ {
protected User $user; protected User $user;
@ -161,34 +165,42 @@ class ActivityType extends AbstractType
if ($activityType->isVisible('persons')) { if ($activityType->isVisible('persons')) {
// TODO Faire évoluer le selecteur et la query <= // TODO Faire évoluer le selecteur et la query <=
$builder->add('persons', EntityType::class, [ $builder->add('persons', HiddenType::class);
'label' => $activityType->getLabel('persons'), $builder->get('persons')
'required' => $activityType->isRequired('persons'), //->addModelTransformer(new PersonToIdTransformer($this->om));
'class' => Person::class,
'multiple' => true, ->addModelTransformer(new CallbackTransformer(
'choice_label' => function (Person $person) { function ($personsAsArray) {
return $person->getFullnameCanonical(); dump('personsAsArray', $personsAsArray); //Doctrine\Common\Collections\ArrayCollection
}, // transform the array to a string
'query_builder' => function (EntityRepository $er) { //return implode(',', $personsAsArray);
return $er->createQueryBuilder('a'); 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')) { if ($activityType->isVisible('thirdParties')) {
// TODO Faire évoluer le selecteur et la query <= // TODO Faire évoluer le selecteur et la query <=
$builder->add('thirdParties', EntityType::class, [ $builder->add('thirdParties', HiddenType::class, []);
'label' => $activityType->getLabel('thirdParties'), $builder->get('thirdParties')
'required' => $activityType->isRequired('thirdParties'), ->addModelTransformer(new CallbackTransformer(
'class' => ThirdParty::class, function ($personsAsArray) {
'multiple' => true, // transform the array to a string
'choice_label' => function (ThirdParty $thirdParty) { //return implode(',', $personsAsArray);
return $thirdParty->getName(); return $personsAsArray;
}, },
'query_builder' => function (EntityRepository $er) { function ($personsAsString) {
return $er->createQueryBuilder('a'); // transform the string back to an array
}, return explode(',', $personsAsString);
]); }
))
;
} }
if ($activityType->isVisible('documents')) { if ($activityType->isVisible('documents')) {
@ -202,18 +214,20 @@ class ActivityType extends AbstractType
if ($activityType->isVisible('users')) { if ($activityType->isVisible('users')) {
// TODO Faire évoluer le selecteur et la query <= // TODO Faire évoluer le selecteur et la query <=
$builder->add('users', EntityType::class, [ $builder->add('users', HiddenType::class, []);
'label' => $activityType->getLabel('users'), $builder->get('users')
'required' => $activityType->isRequired('users'), ->addModelTransformer(new CallbackTransformer(
'class' => User::class, function ($personsAsArray) {
'multiple' => true, // transform the array to a string
'choice_label' => function (User $user) { //return implode(',', $personsAsArray);
return $user->getUsername(); return $personsAsArray;
}, },
'query_builder' => function (EntityRepository $er) { function ($personsAsString) {
return $er->createQueryBuilder('u'); // transform the string back to an array
}, return explode(',', $personsAsString);
]); }
))
;
} }
if ($activityType->isVisible('emergency')) { if ($activityType->isVisible('emergency')) {