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\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')) {