Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/04/2011, 14h19   #1
Membre habitué
 
Avatar de Niki59
 
Homme
Développeur Web
Inscription : mai 2008
Messages : 212
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 23
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2008
Messages : 212
Points : 136
Points : 136
Par défaut 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 :
  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 :
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'));
  }
}
Niki59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h39.


 
 
 
 
Partenaires

Hébergement Web