Bonjour aux spécialistes sf2/Dtne 2, j'ai un pblme que je n'arrive pas à résoudre. Je voudrais votre avis. j'obtiens cet erreur lors de la sauvergarde d'un objet et de ses dépendances
Property "generalParameters" is not public in class "App\BackofficeBundle\Entity\Culture". Maybe you should create the method "setsetGeneralParameters()"
la problematique est la suivante:
dans l'entité Culture on trouve ceci:
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
28
29
30
 
    /**
     * @var GeneralParameters
     *
     * @ORM\ManyToMany(targetEntity="GeneralParameters", inversedBy="culture",  cascade={"persist", "remove"})
     * @ORM\JoinTable(name="culture_document",
     *   joinColumns={
     *     @ORM\JoinColumn(name="culture_id", referencedColumnName="id")
     *   },
     *   inverseJoinColumns={
     *     @ORM\JoinColumn(name="general_parameters_id", referencedColumnName="id")
     *   }
     * )
     */
    private $generalParameters;
 
    public function __construct()
    {
        $this->generalParameters = new \Doctrine\Common\Collections\ArrayCollection();
    }
 
   /**
     * Add generalParameters
     *
     * @param App\BackofficeBundle\Entity\GeneralParameters $generalParameters
     */
    public function addGeneralParameters(\App\BackofficeBundle\Entity\GeneralParameters $generalParameters)
    {
        $this->generalParameters[] = $generalParameters;
    }
ensuite dans l'entité que je tente de persisté après soumission du formulaire on trouve ceci:
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
 
 /**
     * @var Culture
     *
     * @ORM\ManyToMany(targetEntity="Culture", mappedBy="generalParameters",  cascade={"persist", "remove"})
     */
    private $culture;
 public function __construct()
    {
        $this->culture = new \Doctrine\Common\Collections\ArrayCollection();
    }
 
    /**
     * Add culture
     *
     * @param App\BackofficeBundle\Entity\Culture $culture
     */
    public function addCulture(\App\BackofficeBundle\Entity\Culture $culture)
    {
        $this->culture[] = $culture;
    }
et dans le controleur:
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
$generalParametersForm = new GeneralParametersType();
 
        $generalParameter = new  GeneralParameters();
 
        $culture = new Culture();
        $culture->addGeneralParameters($generalParameter);
        $generalParameter->addCulture($culture);
 
 $form = $this->get('form.factory')->create($generalParametersForm);
 
        $form->setData($generalParameter);
 
        $request = $this->get('request');
 
        if ($request->getMethod() === 'POST') {
            $form->bindRequest($request);
 
            if ($form->isValid()){
               $em = $this->getDoctrine()->getEntityManager();
               $em->persist($form->getData());
               $em->flush();
 
               return $this->redirect($this->generateUrl('generalparameters_show', array('id' => $generalParameter->getId())));
 
            }
        }
ahh p-e mettre aussi le formulaire imbriqué
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 ->add('culture', 'collection', array('type' => new CultureType()))
Voilà j'ai l'impression de m'etre tendu un piege tout seul avec doctrine2 qui m'a généré le AddCulture pour gérer la relation entre culture et generalParameters.

a savoir seul la table generalParameters comptre une clé etrangere culture_id, la table culture elle ne compte qu'une colonne id et uen colonne name.

Si vous avez des pistes, des solutions je suis preneur.

Cordialement
Lexter
ps: question idiote, puis je faire une methode setGeneralParameters ou setGgeneralParametersId dans l'entité culture alors que la table correspondante n'a pas de champ generalParametersId ou alors devrait il y en avoir un? emcri d'avance!