Bonjour,

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

Ce que je fais

J'ai mis une relation ManyToOne surl'entitée User

/**
     * @ORM\ManyToOne(targetEntity="App\Entity\Users", inversedBy="property")
 */
 private $user;

Voici comment je récupere l'ID de l'utilisateur connecté, pour l'ajouter au formulaire.

$form = $this->createForm(
              PropertyType::class, 
              $property,
              array('user' => $this->getUser()->getId())
 );

Voici comment je récupere l'ID de l'utilisateur connecté, pour l'ajouter au formulaire. L'ID est bien récupérer.

 public function buildForm(FormBuilderInterface $builder, array $options)
  {
        $user = $options['user'];

....
        ->add('user', HiddenType::class, [
                'data' => $user,
                'data_class' => null,
        ])
.....

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' =>Property::class,
            'translation_domain' => 'forms',
        ]);
        $resolver->setRequired('user');
    }
}

Ce que j'obtiens

Le problème c'est à l'envoie du formulaire j'obtiens cette erreur :

Expected argument of type "App\Entity\Users or null", "string" given at property path "user".

Si je compends bien il me dit que le type envoyé n'est pas le bon.

J'essayer plusieurs méthodes mais je suis bloqué à ce niveau (sur l'envoie de l'ID).

Merci par avance.

2 réponses


Digivia
Réponse acceptée

Hello,
Il ne faut pas ajouter le user dans ton form. C'est dans ton controller, que tu mets à jour ton entité.
Par exemple, à la création, tu fais :

$property = new Property();
$property->setUser($this->getUser());

$form = $this->createForm.....
....
if ($form->isSubmitted....) {
    $this->getDoctrine()->getManager()->persist($property);
    ......
kevy
Auteur

oki merci.