embedForm symfony relation one to one
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:
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:
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