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...
Sinon j'ai bien une autre méthode, mais ca fait une requête de plus à la base :
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()); } } }
- je processform
- je récupere mon objet
- je modifie sa date
- je save
Merci de votre aide.
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()); } }
Partager