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 16/09/2011, 16h50   #1
Candidat au titre de Membre du Club
 
Inscription : avril 2008
Messages : 111
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 111
Points : 12
Points : 12
Par défaut Sauvegarder formulaire imbriqué

Hello,

dans mon appli, je gère des "opérations" certaines d'entre elles sont spéciales :

Operation(id,....,type)
Mission(id, operation_id,.....)

j'ai créé un formulaire NewMissionForm qui va permettre d'enregistrer une instance de la table opération, et comme c'est une opération spéciale (une mission donc), je vais créer une instance de mission également.

je fais donc

Code :
1
2
3
4
5
6
7
8
class NewMissionForm extends BaseOperationForm{
  public function configure(){
    $this->useFields(array('startdate', 'enddate', 'year', 'comment', 'user_id'));
    $form = new MissionForm();
    $form->useFields(array('subject', 'trip', 'transporttype_id'));
    $this->embedForm('Mission', $form);
  }
}
mais comment sauvegarder convenablement tout ça ensuite ?
Siriru est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2011, 13h19   #2
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
C'est un peu light comme description pour un problème aussi toufu.

A priori, si tu pars d'un form créé "à la mano", le mieux, au retour est de repeupler ton form avec les données récupérées pour appliquer les validateurs, ensuite de faire la sauvegarde "à la mano" aussi, c'est a dire de récupérer, créer, les enregistrements et de les peupler des données récupérées.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 11h53   #3
Candidat au titre de Membre du Club
 
Inscription : avril 2008
Messages : 111
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 111
Points : 12
Points : 12
mais depuis la methode doSave du formulaire, je n'arrive pas à récupérer les données du formulaire imbriqué.
Siriru est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 11h30   #4
Candidat au titre de Membre du Club
 
Inscription : avril 2008
Messages : 111
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 111
Points : 12
Points : 12
Si je fais
Code :
 $form = $this->getEmbeddedForm('Mission');
est-ce que je peux avoir les données du formulaire imbriqué ?
Siriru est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2011, 15h44   #5
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Désolé, je n'ai pas assez d'information pour avoir un avis.

Est-ce que le formulaire est lié à une table ? Ou est-ce un formulaire indépendant ?
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 10h02   #6
Candidat au titre de Membre du Club
 
Inscription : avril 2008
Messages : 111
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 111
Points : 12
Points : 12
Oui, comme dit dans mon premier message :

Operation(id,....,type)
Mission(id, operation_id,.....)
Siriru est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 15h43   #7
Candidat au titre de Membre du Club
 
Inscription : avril 2008
Messages : 111
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 111
Points : 12
Points : 12
C'est bon pour l'enregistrement à la main, mais après, plus dur, l'édition. C'est une autre paire de manche j'ai l'impression. J'ai donc un formulaire Mission imbriqué dans un formulaire Operation, ce qui donne le formulaire MissionOperationForm.

j'ai donc dans mes actions :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public function executeEdit(sfWebRequest $request){
    $this->operation = $this->getRoute()->getObject();
    if($this->operation->getOperationtypeId() == Doctrine_Core::getTable('OperationType')->findOneByLabel('Mission')->getId()){
      $this->operation = Doctrine_Query::create()
        ->from('Operation o')
        ->leftJoin('o.Mission')
        ->where('o.id = ?', $request->getParameter('id'))
        ->fetchOne();
      $this->form = new MissionOperationForm($this->operation);
    }
    else{
      $this->form = $this->configuration->getForm($this->operation);
    }
  }
Siriru est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 09h36   #8
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Et ???

Pas de détail depuis
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h08.


 
 
 
 
Partenaires

Hébergement Web