Bonjour,

Voila je rencontre un petit problème avec mon code.

Je souhaite ajouter l'id d'un manager (qui est aussi dans la table user) sur la création d'un user.

Mon formulaire d'enregistrement est:

class RegistrationFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {

        $builder
            ->add('email')
            ->add('plainPassword', RepeatedType::class, [
                'first_options' => array('label' => 'Mot de passe'),
                'second_options' => array('label' => 'Confirmation du mot de passe'),
                'type' => PasswordType::class,
                'mapped' => false,
                'constraints' => [
                    new NotBlank([
                        'message' => 'Please enter a password',
                    ]),
                    new Length([
                        'min' => 6,
                        'minMessage' => ' Le mot de passe doit avoir plus de {{ limit }}  caractères',
                        'max' => 4096,
                    ]),
                ],
            ])
            ->add('trigramme')
            ->add('roles', CollectionType::class, [
                'entry_type' => ChoiceType::class,
                'entry_options' => [
                    'label' => 'Type:  ',
                    'choices' => [
                        'Editeur' => 'ROLE_EDITEUR',
                        'Manageur' => 'ROLE_MANAGER',
                        'Administrateur' => 'ROLE_ADMIN',
                    ],
                ],
            ])
        ->add('idmanager', EntityType::class, [
                    'class' => User::class,
                    'label' => false,
                    'query_builder' => function (EntityRepository $er) {
                        return $er->createQueryBuilder('u')
                            ->where('u.roles LIKE :role')
                            ->setParameter('role', '%' . 'ROLE_MANAGER' . '%');
                    },
                    'choice_label' => 'email',
                    'choice_value' => function (User $user = null) {
                        return $user ? $user->getId() : '';
                    },
                ])
        ;
    }

Mon problème est sur le idmanager. Ma value que je retourne quand je regarde la code source de ma page et dans le debugger de symfony reseemble bien a un int:

Symfony:

  "email" => "a@a.aaaa"
  "plainPassword" => [▶]
  "roles" => [▶]
  "idmanager" => "2"
  "trigramme" => "aaa"

Code source de ma liste déroulante:

  <select id="registration_form_idmanager" name="registration_form[idmanager]" class="form-control">
    <option value="2">manag@manag.manag</option>
    <option value="5">test@test.test</option></select>

J'ai fait pas mal de test, mais rien n'est convainquant

Auriez vous une idée pour m'aiguiller??

Après beaucoup de recherche je retombe toujours sur l'erreur " Expected argument of type "integer", "App\Entity\User" given at property path "idmanager". "

Je vous remercie

Jomalix

1 réponse


jomalix
Auteur
Réponse acceptée

Bonjour!

EUREKA!!! en faite je n'avais pas pensé au self join, a partir de là tout va beaucoup mieux :)

Sujet résolu!