Bonjour,
J'ai un problème auquel je n'arrive pas à apporter une solution, j'espère que vous pourrez m'aider.
Contexte:
Une table Resources avec (notamment) un champ submit_user.
Une table Users avec (notamment) un champ id et un champ username.
Le champ id est clé primaire de la table.
Une clé étrangère de Resources(submit_user) vers Users(username).
Un formulaire pour Resources dont le widget et le validateur pour le champ submit_user sont les suivants:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 'submit_user' => new sfWidgetFormDoctrineChoice(array('model' => 'Users', 'add_empty' => false)) //On aurait tout aussi bien pu avoir 'model' =>getRelatedModelName('Users')Les plus attentifs d'entre vous remarqueront que si l'ont tente d'insérer une valeur de submit_user telle que donnée par cela, on va violer la contrainte de clé étrangère définie plus haut. En effet, c'est le champ id qui sera pris pour valeur de submit_user alors qu'on s'attendrait à avoir le champ username pour respecter la contrainte.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 'submit_user' => new sfValidatorDoctrineChoice(array('model' => 'Users', 'required' => false, 'column' => 'username')) //Même remarque que ci-dessus
Après quelques tentatives ratées, je me tourne vers vous et votre maîtrise du framework de formulaire pour m'aiguiller vers une solution, c'est-à-dire un moyen de transmettre le champ username et non le champ id du Users pour les choix du Widget correspondant à submit_user de Resources. (J'insiste sur le fait qu'il ne s'agit pas ici d'un problème d'affichage dans le formulaire donc, pas d'option method, column ou encore un __toString() dans Users, c'est déjà fait)
Merci d'avance et n'hésitez pas à me questionner si je ne suis pas assez clair ou trop ambigu.
Kantho
Partager