Bonjour,
Voila je rencontre un petit problème avec mon code.
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');
}
}
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.
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);
......