Réaliser un formulaire avec embedForm
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 :
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
| 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 |
Le contenu de mon fichier EntrepriseForm :
Code:
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',
)
));
}
} |
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 ;)
/* .* .* .* .* .* .* .* .* .* .* .* .* .* .* .* .* .* .* .* .*/
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:
1 2 3 4 5 6 7
| class EntrepriseEmployeForm extends BaseEntrepriseEmployeForm
{
public function configure()
{
$this->useFields(array('id', 'title'));
}
} |