IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Enregistrement de données depuis un formulaire généré modifié


Sujet :

Symfony PHP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Enregistrement de données depuis un formulaire généré modifié
    Bonjour à tous !

    J'ai modifié le "/new/" formulaire de mon module "Playing" qui permet de créer un lien entre un "Artist" et "Song" à une date choisie. Après modifications, j'ai désormais une liste déroulante de groupes ("Bands") et non d' "Artists" dans ce formulaire, et j'aimerais pouvoir sauver en BDD les mêmes informations, mais pour tous les artistes d'un groupe (utilisation d'un foreach())

    Le formulaire s'affiche correctement lorsque je visite "/playing/new/" et montre bien une liste de tous les groupes et non d'artistes.

    Mais maintenant je me demande où exactement je dois placer le code qui récupère tous les artistes d'un groupe et insère un nouveau "Playing" en base pour chacun d'entre eux ? Est-ce dans la fonction "executeCreate()" du fichier "actions.class.php" ?

    Nouveaux détails: J'ai remarqué que "executeCreate()" utilise "processForm()". Cependant, processForm() est aussi utilisée pour l'action "edit", la fonction affiche un message et redirige l'utilisateur. Je ne peux donc pas appeler processForm() dans mon foreach().

    J'ai essayé de construire mon propre executeCreate(), mais rien n'a changé du côté de la BDD :

    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
    public function executeCreate(sfWebRequest $request) {
      $this->forward404Unless($request->isMethod(sfRequest::POST));
     
      $this->form = $this->configuration->getForm();
      $playing= $this->form->getObject();
     
      $artists_list= Doctrine_Query::create()
              [...]
              ->execute();
     
      foreach ($artists_list as $artist) {
          $playing->setArtistId($artist['id']);
          $playing->save();
      }
     
      $this->getUser()->setFlash([...]);
      $this->redirect([...]);
    }
    Des suggestions ?

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    J'ai remarqué que "executeCreate()" utilise "processForm()". Cependant, processForm() est aussi utilisée pour l'action "edit", la fonction affiche un message et redirige l'utilisateur. Je ne peux donc pas appeler processForm() dans mon foreach().
    ProcessForm ne fait qu'enregistrer les infos du form en objet de base de données. tu peux d'ailleurs le surcharger sur ton objet form.

    Process Form n'affiche pas le message de succès/d'erreur et ne redirige pas non plus


    Voila un exemple d'update_create
    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
     
     
      $this->form = new MachinForm($machin);
     
     
     
      $this->form->bind($values);
     
      // S'il est valide
      if ($this->form->isValid()) {
        // On enregistre le machin
        $machin= $this->form->save(); //process form est appellé ici
     
         // On redirige vers l'index
        $this->getUser()->setFlash('success', 'MACHIN_EDIT_SUCCESS');
     
        $this->redirect('machin/index');
      }
    Dans cet exemple ton save des artistes devrait etre effectuer après le save du formulaire

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/10/2009, 14h18
  2. [MySQL] Enregistrer les données d'un formulaire sur un autre serveur
    Par nixax dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 04/11/2006, 21h36
  3. Enregistrement des données d'un formulaire
    Par mymyma dans le forum Struts 1
    Réponses: 10
    Dernier message: 03/07/2006, 10h28
  4. Réponses: 6
    Dernier message: 06/06/2006, 11h46
  5. enregistrer les données d'un FORMULAIRE sur une TABLE
    Par godzinho dans le forum Access
    Réponses: 15
    Dernier message: 11/03/2006, 18h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo