Gaylord.P
Gaylord.P

Reputation: 1468

Cannot found entity after add form in Symfony

I have three entity (Activite, CabinetEquipe and ActiviteEquipe). When I add Activite, I want to add many CabinetEquipe in ActiviteEquipe.

CabinetEquipe entity

/**
 * @var string
 *
 * @ORM\Column(name="libelle", type="string", nullable=false, length=125)
 */
private $libelle;

Activite entity

/**
 * @ORM\OneToMany(targetEntity="LogicielBundle\Entity\ActiviteEquipe", mappedBy="activite", cascade={"persist", "remove"})
 */
private $equipes;

public function addEquipe(\LogicielBundle\Entity\ActiviteEquipe $equipe)
{
    $this->equipes[] = $equipe;
    $equipe->setActivite($this);
    return $this;
}

public function removeEquipe(\LogicielBundle\Entity\ActiviteEquipe $equipe)
{
    $this->equipes->removeElement($equipe);
}

public function getEquipes()
{
    return $this->equipes;
}

ActiviteEquipe entity

/**
 * @ORM\ManyToOne(targetEntity="UtilisateurBundle\Entity\CabinetEquipe")
 * @ORM\JoinColumn(nullable=false)
 */
private $equipe;

public function setEquipe(\UtilisateurBundle\Entity\CabinetEquipe $equipe)
{
    $this->equipe = $equipe;

    return $this;
}

public function getEquipe()
{
    return $this->equipe;
}

But, after my form for add Activite, I have this error : Found entity of type UtilisateurBundle\Entity\CabinetEquipe on association LogicielBundle\Entity\Activite#equipes, but expecting LogicielBundle\Entity\ActiviteEquipe

My Form :

        $builder->add('equipes', 'entity', array(
            'label' => 'Équipe(s)',
            'class' => 'UtilisateurBundle\Entity\CabinetEquipe',
            'expanded' => true,
            'multiple' => true,
            'choices' => $equipes,
            'property' => function($equipe) {
                return $equipe->getLibelle();
            }
        ));

Can you help me pleases ? I'm newbie in Symfony

Upvotes: 3

Views: 36

Answers (1)

Paweł Mikołajczuk
Paweł Mikołajczuk

Reputation: 3812

You expect \LogicielBundle\Entity\ActiviteEquipe in your entity.

public function addEquipe(\LogicielBundle\Entity\ActiviteEquipe $equipe)
{

But in form you work on \UtilisateurBundle\Entity\CabinetEquipe.

$builder->add('equipes', 'entity', array(
    'label' => 'Équipe(s)',
    'class' => 'UtilisateurBundle\Entity\CabinetEquipe',

In form you need to choose entity which is expected in addEquipe and removeEquipe.

Looks like you expect some kind of proxy (ActiviteEquipe) which is imo not needed here.

Upvotes: 2

Related Questions