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 :

Modifier un widget dans l'action [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Par défaut Modifier un widget dans l'action
    Bonjour,

    Dans mon form qui représente un ticket, j'ai un widget sfFormPropelChoice basé sur un statut (validé, en cours de traitement, résolu...). A côté, j'ai un widget sfWidgetFormDateTime qui correspond à la date de prise en charge de mon ticket.
    Et je voudrais que lorsque l'utilisateur choisi le statut "en cours de traitement", le champ "date de prise en charge" se positionne automatiquement à la date courante.
    Du coup dans mon action, je teste la valeur du champ statut et si il est à "en cours de traitement", je voudrais mettre à jour mon champ "date de prise en charge".
    Mais comment faire ? je suis pas sur de mon setValue...
    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
      public function executeTicket(sfWebRequest $request)
      {
        $this->forward404Unless($LogistiqueTicket = LogistiqueTicketPeer::retrieveByPk($request->getParameter('id')), sprintf('Object LogistiqueTicket does not exist (%s).', $request->getParameter('id')));
      	$this->form = new LogistiqueTicketInfoForm($LogistiqueTicket);
     
        if($request->isMethod('post'))
        {
          // PAR DEFAUT quand on met l'etat : en cours de traitement, on met la date de pris en charge a maintenant
          if($this->form['status_id']->getValue() == 3)
          {
            $this->form['assigned_at']->setValue() = date();
          }
          // on serialize le form dans la BD
          if($this->processForm($request, $this->form))
          {
          	$this->redirect('manage_logistique/ticket?id='.$LogistiqueTicket->getId());
          }
        }
      }
    Sinon j'ai bien une autre méthode, mais ca fait une requête de plus à la base :
    - je processform
    - je récupere mon objet
    - je modifie sa date
    - je save
    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
      public function executeTicket(sfWebRequest $request)
      {
        $this->forward404Unless($LogistiqueTicket = LogistiqueTicketPeer::retrieveByPk($request->getParameter('id')), sprintf('Object LogistiqueTicket does not exist (%s).', $request->getParameter('id')));
      	$this->form = new LogistiqueTicketInfoForm($LogistiqueTicket);
     
      	if($request->isMethod('post'))
        {
        	// on serialize le form dans la BD
      	  if($this->processForm($request, $this->form))
      	  {
    	      // PAR DEFAUT quand on met l'etat : en cours de traitement, on met la date de pris en charge a maintenant
    	      if($this->form['status_id']->getValue() == 3)
    	      {
    	        $LogistiqueTicket->setAssignedAt(date());
    	        $LogistiqueTicket->save();
    	      }
      	  	$this->redirect('manage_logistique/ticket?id='.$LogistiqueTicket->getId());
      	  }
        }
    Merci de votre aide.

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Est-ce que ton changement de date est limité au traitement de ce formulaire ou est-il toujours vrai ?

    Dans ce cas, tu aurais tout intérêt à le positionner dans le modèle plutôt que dans le form.

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Par défaut
    Bonjour,
    Je ne peux pas le mettre dans le modèle car il est lié uniquement à ce formulaire...
    Du coup est-ce qu'il est possible de modifier un widget du form dans mon action ? Genre avec mon setValue qui marche pas....

    Merci.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Par défaut
    J'aurais plutôt tendance à rester uniquement dans le formulaire :
    • quand tu es dans ton configure, tu testes la valeur de ton champ status (a priori, un
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      $this->getObject()->getStatus()
      devrait marcher)
    • s'il te retourne la valeur que tu attends, tu fixes la valeur de ton autre champ (ou widget, ou les deux, je ne sais plus, il faut tester).

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Par défaut
    Merci de vos réponses.
    En fait mon champ statut est dans une liste déroulante, donc dans mon configure, ça va pas marcher...
    Par contre, je pourrais faire un coup de javascript, mais bon je me demandais si on pouvait modifier un form avant de le serialiser dans la base...
    Merci quand même !

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Par défaut
    En fait, vu ton type de problème, je pensais effectivement que tu étais obligé d'utiliser javascript. La solution que je te proposais était au cas où tu recharges la page avec par défaut ton champ sélectionné.

    Ceci pour répondre à ta dernière question : tu peux donc modifier ton form avant l'enregistrement en base.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [1.x] modifier un tag dans l'action
    Par jejeman dans le forum Symfony
    Réponses: 2
    Dernier message: 01/04/2010, 17h44
  2. comment modifier les widgets dans une fenètre??
    Par afrikha dans le forum GTK+ avec C & C++
    Réponses: 6
    Dernier message: 14/10/2005, 14h48
  3. Réponses: 3
    Dernier message: 30/07/2004, 10h51
  4. [JSP] [STRUTS] Switch dans une action
    Par babylone7 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 28/07/2004, 15h21
  5. Modifier un événement dans le code
    Par HT dans le forum Langage
    Réponses: 6
    Dernier message: 20/06/2003, 09h46

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