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 :
  1. Créer une entreprise ET ses employés en une fois.
  2. É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 : 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
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
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 : 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'));
  }
}