Bonjour à tous et à toutes

Je butte depuis quelques temps sur un problème sur lequel je n'arrive pas a trouver de solution.
Je tiens à préciser que je suis débutant (mais vraiment) et il se pourrait que je n'utilise pas les termes exacts de symfony, j'espère que vous me comprendrez.
De pluse dés le début la base m'est imposée et que je ne peux pas changer son modèle.

Voilà mon soucis.

Je tente de valider des données envoyés en ajax à l'aide de la validation de formulaire. Cela semble marcher pour la majorité de mes paramètres et ou entités sauf pour une.
Une entité qui possède une référence à une autre entité composée de plusieurs clés primaires (j'espère être clair :/)
En gros, là ou le formulaire semble bien récupérer les entités avec un seul identifiant, impossible de lui faire retrouver celle avec plusieurs.

Je n'ai pas l'entitée fille (celle que je veux que le formulaire retrouve), seulement ses deux identifiants que je passe en JSON dans la requette que je binde au formulaire.

Maintenant, le code :
Entité comAction
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
**
 * com_action
 * @ORM\Table(name="com_action")
 * @ORM\Entity(repositoryClass="Gestion\SiteBundle\Entity\Repository\comActionRepository")
 * @ORM\HasLifecycleCallbacks()
 */
 
class comAction
{
 
 
	/**
	* @ORM\ManyToOne(targetEntity="Gestion\CodifBundle\Entity\Codif",inversedBy="ActionsByType")	
	* @ORM\JoinColumns({	
	*					@ORM\JoinColumn(name="ref_type", referencedColumnName="id_codif"),
	*					@ORM\JoinColumn(name="ref_gp_type", referencedColumnName="id_groupecodif")
	*					})
	* @Groups({"comAction"})
	*/
	private $type;
    /**
     * @var integer
	 * @ORM\Column(name="id_action", type="integer")
	 * @Groups({"comAction"})
     * @ORM\Id
     */
    private $idAction;
...
Entité Codif
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
31
32
33
34
35
36
37
38
39
 
 /**
 * Codif
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="Gestion\CodifBundle\Entity\Repository\CodifRepository")
 */
class Codif
{
 
 
    /**
     * @var integer
      * @Groups({"codif","contact","comAction"})
     * @ORM\Column(name="id_codif", type="integer")
     * @ORM\Id
     */
    private $idCodif;
 
	/** TABLES JOINTES **/
 
	/**
	 * inverse Side
	 * @Type("ArrayCollection<Gestion\SiteBundle\Entity\comAction>")
	 * @Groups({"codif"})
	 * @ORM\OneToMany(targetEntity="Gestion\SiteBundle\Entity\comAction" , mappedBy="type")
	 */
	private $ActionsByType;
 
	/** DATA **/ 
       /**
         * @var integer
	 * @Groups({"codif","contact","comAction"})
         * @ORM\Column(name="id_groupecodif", type="integer")
	 * @ORM\Id
	 * @Assert\NotBlank()
	 * @Assert\Type("integer")
     */
    private $idGroupeCodif;
...
Le comActionType
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
 
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
		$transformer = new DateTimeToTimestampTransformer();
        $builder
            ->add('refContact','integer')
            ->add('site','entity', array(
			    'class' => 'GestionSiteBundle:Site',
				'property' => 'idSite'
			))
			->add('type','entity',array(
			    'class' => 'GestionCodifBundle:Codif',
				// 'compound' => true,
				'property' => 'idCodif'
			))
            ->add('obs', 'text')
            ->add($builder->create('dtAction', 'text')
                ->addModelTransformer($transformer))
			 ->add($builder->create('dtRelance', 'text')
                ->addModelTransformer($transformer));
    }
Les données envoyées en AJAX
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
					'comAction':{
						'refContact':self.fContact.getValue()
						,'site':self.fProspection.getValue()
						,'type':{'idCodif':self.fTypeAction.getValue(),'idGroupeCodif':42}
						,'obs':self.fObs.getValue()
						,'dtAction':self.fDtCreation.getValue().format('U')+self.timeZone.format('Z')
						,'dtRelance':(self.fDtRelance.getValue()	!= '')? self.fDtRelance.getValue().format('U')+self.timeZone.format('Z') :'' 
					}
type et codif sont la même chose. le type est simplement un groupe de codif. (Généralement, le groupe de codif est connu, c'est l'id qui change en fonction de la sélection de l'utilisateur)
Tout le reste du code, même s'il n'est pas forcement présent semble fonctionner sans la gestion du type.

Si j'oublie des éléments importants, n'hésitez pas à demander et si il y à de grosse bêtises dans le code, n'hésitez pas à les pointer du doigts.

Merci d'avance