|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre à l'essai
![]() Inscription : mai 2003 Messages : 69 ![]() |
Bonjour à tous,
Je suis sur Symfony 1.4 et Doctrine. J'ai un formulaire assez complexe qui fait appel à plusieurs sous formulaires. Le formulaire général permet d'enregistrer un bien immobilier et ses caractéristiques. Le problème se situe sur la notion de propriétaire, d'après les exigences du client, un bien peut avoir un ou 2 propriétaire(s). J'ai donc un formulaire de base qui contient un sous-formulaire pour le 1er propriétaire et un bouton "Ajouter un 2ème propriétaire" qui fait un appel ajax pour rajouter à la page un nouveau sous-formulaire de type propriétaire. L'ensemble fonctionne plutôt bien, sauf dans un cas, quand je saisie uniquement un seul propriétaire, je retrouve quand même dans la table bien immobilier la clé étrangère "proprietaire_id_2" qui est remplie, et une ligne vide dans la table propriétaire correspondant à ce 2ème propriétaire. Alors que justement le but du bouton "ajouter un 2ème proprietaire" c'est de ne pas charger la base de proprietaire n°2 tous vides ! J'ai essayé de manipuler le schema.yml et les class.php mais sans succès, je ne vois vraiment pas comment faire... Je sais pas si mon message est clair, n'hésitez pas à me demander des précisions ou des poritions de code si nécessaire. Merci pour vos lumières ! Voici la partie de mon schema yml qui concerne ces tables "cedant" (=bien immobilier) et proprietaire : Code :
|
||
|
|
00
|
|
|
#2 | ||
|
Membre à l'essai
![]() Inscription : mai 2003 Messages : 69 ![]() |
J'ai oublié de vous préciser que dans CedantForm.class.php je fais un embed relation uniquement s'il existe déjà un proprietaire2 pour l'enregistrement :
Code :
Merci pour votre aide. |
||
|
|
00
|
|
|
#3 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
J'ai jeté un oeil rapide sur ton schéma.
A priori il manque des foreignAlias dans tes relations qui vont rendre leur utilisation plus difficile dans ton programme. Le foreignAlias permet de définir le nom de la relation vue par la table de l'autre côté de la relation. Mais ceci n'interfère pas avec ton problème. Tu es dans le cas d'un problème courant des form embeded de symfony et de la création du formulaire maître. Avec la contrainte particulière d'une liaison [1-2], loin d'être courante... Il faut savoir que symfony/doctrine gèrent mal l'ajout d'enregistrement embed lors de la création de l'enregistrement de base. La recommandation est ici de créer l'enregistrement de base et seulement une fois celui-ci enregistré, de créer par embed les autres. Il y a un plugin qui gère les embed pour en créer, en supprimer,... tu le trouvera dans un des sujet épinglé de la salle plugin. Peut-être pourra-t-il t'aider, même si j'ai des doutes.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#4 |
|
Membre à l'essai
![]() Inscription : mai 2003 Messages : 69 ![]() |
Merci Michel pour cette réponse.
Je m'étais déjà rendue compte que les embed form étaient mal gérés au create. J'ai donc mis en place des tests pour les 2 situations : - au create j'affiche uniquement les champs de la table cedant - au update j'ai les champs de la table cédant + les autres formulaires dont le propriétaire Le souci du proprietaire n°2 c'est qu'à l'ouverture de l'update il n'est pas présent dans le formulaire (le embed proprietaire2 n'existe donc pas) et pourtant au save il me crée l'entrée dans la base dans la foreign key de cedant et dans la table proprio... c'est ça que je trouve assez bizarre. J'avais peur d'avoir fait une erreur dans les relations du schema.yml. |
|
|
00
|
|
|
#5 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
A priori le schema est bon.
Je regarderais plutôt du côté des validateurs.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
Copyright © 2000-2012 - www.developpez.com