Symfony 4 par l'exemple - ID utilistaeur

Ce sujet est résolu
Default
,

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éponse

87112
,

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);
    ......
Default
,

oki merci.