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
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 ?
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
Et voici le code du formulaire
Voila j'espère avoir été assez clair. Merci de vos réponses
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))); } }
Partager