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.