Tous d'abord bonjour à tous, je poste ce message après diverse recherche, mais pas moyen je n'y arrive pas. J'ai donc besoin de votre aide.

J'ai dans ma base une table user et une table address en relation 1to1.

J'ai donc dans ma table user une clé étrangère idaddress.

Lorsque je crée mon formulaire pour modifier un utilisateur et une adresse, je met le formulaire adresse en embedForm.

Lorsque je rentre des données dans la base, la modification de l'adresse fonctionne. Par contre quand j'ai un user et que je veux créer une nouvelle adresse et donc lui assigner, l'adresse est bien créée en base mais la relation n'est pas effectuée ( le champs idaddress de la table user ne se remplit pas).

Je galère depuis deux jours la dessus.

Voici une partie de mon schema.yml

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
 
user:
  columns:
    iduser:
      type: integer(4)
      primary: true
      notnull: true
      autoincrement: true
    firstname:
      type: string(100)
      notnull: true
    lastname:
      type: string(100)
      notnull: true
    email:
      type: string(255)
      notnull: true
    password:
      type: clob(65535)
      notnull: true
    passwordSalt:
      type: string(10)
      notnull: true
    creation:
      type: timestamp
      notnull: true
    membership:
      type: integer(4)
      notnull: true
    type:
      type: string(45)
      notnull: true
    avatar:
      type: string(255)
    phone:
      type: string(10)
    facebook:
      type: string(255)
    twitter:
      type: string(255)
    linkedin:
      type: string(255)
    address_idaddress:
      type: integer(4)
  relations:
    addressIdaddress:
      class: address
      local: address_idaddress
      foreign: idaddress
      foreignAlias: users
  indexes:
    fk_user_address1:
      fields: [address_idaddress]
  options:
    charset: utf8
    collate: utf8_unicode_ci
    type: MyISAM
 
address:
  columns:
    idaddress:
      type: integer(4)
      primary: true
      notnull: true
      autoincrement: true
    address:
      type: string(255)
      notnull: true
    zipcode:
      type: integer(4)
      notnull: true
    city:
      type: string(100)
      notnull: true
    country:
      type: string(100)
      notnull: true
  options:
    charset: utf8
    collate: utf8_unicode_ci
    type: MyISAM
Je précise que ma base a été créée avec mysql Workbench et le yml avec le plugin doctrine de ce logiciel. Y'a t'il une erreur ?

Et voici le code du formulaire

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
 
class accountForm extends userForm {
 
    public function configure() {
        unset($this["passwordSalt"], $this["creation"], $this["membership"], $this["avatar"], $this["type"]);
 
        $addressForm = new addressForm($this->getObject()->addressIdaddress);
        unset ($addressForm["idaddress"]);
        $this->embedForm('address', $addressForm);
        //$this->embedRelation("addressIdaddress");
 
        $this->widgetSchema["password"] = new sfWidgetFormInputPassword(array(), array("value" => $this->getObject()->password));
        $this->widgetSchema["firstname"]->setLabel("Prénom");
        $this->widgetSchema["lastname"]->setLabel("Nom");
        $this->widgetSchema["email"]->setLabel("Adresse email");
        $this->widgetSchema["password"]->setLabel("Mot de passe");
 
        $this->widgetSchema["address_idaddress"] = new sfWidgetFormInputHidden(array(), array("value" => $this->getObject()->address_idaddress));
 
        $this->setValidator("facebook", new sfValidatorUrl(array("required" => FALSE)));
        $this->setValidator("twitter", new sfValidatorUrl(array("required" => FALSE)));
        $this->setValidator("linkedin", new sfValidatorUrl(array("required" => FALSE)));
    }
 
}
Voila j'espère avoir été assez clair. Merci de vos réponses