Bonjour,

J'ai un peu cherché à gauche à droite mais je ne comprends toujours pas ce qui m'arrive. Je suis en PHP8.0. J'essaye d'attribuer un Id de projet à un contact et j'ai une erreur que je n'arrive pas à résoudre :

"App\Entity\Visa\VisaContacts::setIdProjet(): Argument #1 ($idProjet) must be of type ?App\Entity\Visa\VisaProjets, int given, called in C:\Users\lenovo\Documents\NetBeansProjects\syntherm-NEW\src\Controller\Visa\VisaController.php on line 153"

Le code de mon entité est le suivant :



namespace App\Entity\Visa;

use App\Entity\User\User;
use App\Repository\Visa\VisaContactsRepository;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass=VisaContactsRepository::class)
 */
class VisaContacts
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\ManyToOne(targetEntity=VisaProjets::class)
     */
    private $idProjet;

    /**
     * @ORM\ManyToOne(targetEntity=User::class)
     */
    private $idUser;

    public function getId(): ?int
    {
        return $this->id;
    }

    public function getIdProjet(): ?VisaProjets
    {
        return $this->idProjet;
    }

    public function setIdProjet(?VisaProjets $idProjet): self
    {
        $this->idProjet = $idProjet;

        return $this;
    }

    public function getIdUser(): ?User
    {
        return $this->idUser;
    }

    public function setIdUser(?User $idUser): self
    {
        $this->idUser = $idUser;

        return $this;
    }
}```

Avec pour controller :

```   /**
     * @Route("/visa/nouveauContact/{idProjet}", name="visa_nouveau_contact", options={"expose" : true})
     */
    public function visa_nouveau_contact(EntityManagerInterface $em, Request $req, Session $session, Security $security, $idProjet)
    {
        //'Démarrage de session'
        $session->start();
        $session->set("lastPage", "visa_nouveau_contact");
        $this->em = $em;
        $this->user = $security->getUser();

        //création d'un nouvel object
        $nouveau_contact = new \App\Entity\Visa\VisaContacts();
        $form = $this->createForm(\App\Form\Visa\VisaContactsType::class, $nouveau_contact);
        $form->handleRequest($req);

        //Action si envoyé
        if ($form->isSubmitted() && $form->isValid()) {

            //ajout du compte user
            if ($this->user != null) {
                $nouveau_contact->setIdUser($this->user);
            }
            //ajout de l'ID du projet ???
            dump($idProjet);
            $nouveau_contact->setIdProjet($idProjet);

            $em->persist($nouveau_contact);
            $em->flush();
        }

        return $this->render('visa/visa_nouveau_contact.html.twig', [
            'form' => $form->createView()
        ]);
    }```

Avez vous une idée ?

Salutations,

Thomas.

Aucune réponse