Bonjour,
J'ai un problème lors de la création de mon formulaire. Je vais essayer d'expliquer ca le plus simplement possible
Dans mon application, il y a une table Entreprise et une table Employé.
Mes entreprises peuvent avoir plus employés différent.
Mais mes employés ne peuvent avoir plusieurs entreprises différentes.
C'est donc pour moi une relation one-to-many.
Je souhaite créer un formulaire sur une seule page, où l'on pourrait :
- Créer une entreprise ET ses employés en une fois.
- Éditer l'entreprise et ses salariés (en supprimer, rajouter, editer...)
J'ai réussi à mettre au point ce formulaire.
- L'entreprise est bien ajouté dans la table.
- Les salariés sont bien ajoutés dans la table.
Seulement voila, mes salariés on une clé étrangère appelé "Entreprise_id" qui vaut toujours NULL quand je valide le formulaire.
Du coup aucun employés n'est rattaché à l'entreprise.
- - - - - - - - - - - - -
Voici ma configuration :
- J'utilise symfony version 1.4.8
- J'utilise le plugin ahDoctrineEasyEmbeddedRelations
Mon schema :
Le contenu de mon fichier EntrepriseForm :
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 Entreprise: columns: id: primary: true type: integer(5) notnull: true autoincrement: true title: type: string(250) notnull: true EntrepriseEmploye: columns: id: primary: true type: integer(5) autoincrement: true title: type: string(250) Entreprise_id: type: integer(5) relations: Entreprise: class: Entreprise foreignAlias: EntrepriseEmploye onDelete: CASCADE local: Entreprise_id foreign: id
Ca doit être un problème assez courant, mais coté documentation je n'ai pas trouvé grand chose, alors si quelqu'un avez la solution ca serait cool
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 class EntrepriseForm extends BaseEntrepriseForm { public function configure() { $this->embedRelations(array( 'EntrepriseEmploye' => array( 'considerNewFormEmptyFields' => array('title'), 'formFormatter' => null, 'multipleNewForms' => true, 'newFormsInitialCount' => 5, 'newFormsContainerForm' => null, // pass BaseForm object here or we will create ahNewRelationsContainerForm 'newRelationButtonLabel' => '+', 'newRelationAddByCloning' => true, 'newRelationUseJSFramework' => 'jQuery', ) )); } }
/* .* .* .* .* .* .* .* .* .* .* .* .* .* .* .* .* .* .* .* .*/
J'ai trouvé la solution, pour ceux que ca intéresse : il suffisait de préciser qu'on n'utiliserait pas le champ Entreprise_id dans la classe form des employés.
Tout bêtement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 class EntrepriseEmployeForm extends BaseEntrepriseEmployeForm { public function configure() { $this->useFields(array('id', 'title')); } }
Partager