Bonsoir à tous,

Etant débutant sur Symfony2, je tourne en rond sur un problème et j'aimerai avoir vos avis.

J'ai 2 entités (Voyage et Itineraire (route en anglais)) reliées entre elles par une relation OneToMany (Un voyage est composé de plusieurs itinéraires)
Voici leur classse en résumé :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
class OswRoute
{
 
    /**
     * @var \OswTravel
     *
     * @ORM\ManyToOne(targetEntity="OswTravel", inversedBy="routes")
     * @ORM\JoinColumn(name="OswTravel_id", referencedColumnName="id", nullable=false, onDelete="CASCADE"))
     */
    private $travel;
 
   /**
     * Set travel
     *
     * @param \Opensworld\SiteBundle\Entity\OswTravel $travel
     * @return OswRoute
     */
 
    public function setTravel(OswTravel $travel)
    {
        $this->travel = $travel;
 
        return $this;
    }
 
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
class OswTravel
{
    /**
     * @ORM\OneToMany(targetEntity="OswRoute", mappedBy="travel")
     */
    private $routes;
 
    public function __construct()
    {
        $this->routes = new \Doctrine\Common\Collections\ArrayCollection();
    }
}
Et le formulaire de création d'un itinéraire relatif à un voyage

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
public function buildForm(FormBuilderInterface $builder, array $options){
        $builder
            ->add('addressGmaps')
            ->add('latitude')
            ->add('title')
            ->add('detail')
            ->add('position')
            /*->add('travel')*/
        ;
    }
Le soucis, c'est que je n'arrive pas à passer en parametre l'entité du voyage lors de la génération de ce formulaire. Si je décommente ->add('travel') je peux sélectionner un voyage mais comme la création d'un itinéraire est toujours relative au voyage en cours d'édition, j'aimerai grâce à son id renseigner l'entité itineraire.

J'ai fait ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
$em = $this->getDoctrine()->getManager();
$travel = $em->getRepository('OpensworldSiteBundle:OswTravel')->find($id);
$entity = new OswRoute();
$entity.setTravel($entity); //ligne 52
$form = $this->createCreateForm($entity, $idparent);
mais ça génère cette erreur :
UndefinedFunctionException: Attempted to call function "setTravel" from namespace "Opensworld\SiteBundle\Controller" in D:\wamp\www\opensworld_new\src\Opensworld\SiteBundle\Controller\OswRouteController.php line 52.

Merci d'avance à celui qui éclairera ma lanterne.