j'ai un formulaire qui comprend les champs: date_debut , duree et date_fin (type hidden)
dont j'aimerai que la date_fin soit calculer automatiquement apres que le formulaire a été soumis
(les champs date_debut et duree sont renseignés à partir du formulaire)

voici le formulaire:
Code cakephp : 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
20
21
22
23
24
25
26
27
28
29
30
31
 
 
 <?= $this->Form->create( $abonnement ); ?>
 
<?= $this->Form->control('debut_periode', 
 
['minYear' => Date('Y') ,'monthNames' => true,
 'empty' => [
 
'day' => 'jour',
 
'year' => 'année',
 
'month' => 'mois',
 
'hour' => 'heure',
 
'minute'=> 'min'
                           ] 
 
                 ]);
 
?>
<?= $this->Form->control('fin_periode', ['type'=>'hidden'] );?>
 
durée:<?= $this->Form->select('duree',[ '+1'=>'1' ,'+2'=>'2','+3'=>'3','+4'=>'4' ]); ?>
 
<?= $this->Form->select('unite',[ 'hours'=>'heure(s) ' , 'days'=>'jour(s) ' , 'weeks'=>'semaine(s) ' ,'months'=>'mois']); ?>
<?= $this->Form->button(__('enregistrer')); ?>
 
<?= $this->Form->end(); ?>
Cela fonctionne bien mais le problème se situe au niveau de l'action add du contrôleur ( $abonnement->fin_periode = $temp4 ;
)
voici l'action add de mon controller

Code php : 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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
   

  public function add( )
   {
    $abonnement = $this->Abonnements->newEntity();

      if ($this->request->is('post'))
      {
                   //on recupere la date debut 

              $temp1 = Chronos::create( $this->request->getData('debut_periode'));


                  //on recupere la durée de reservation 
                  $temp2 = $this->request->getData('duree');
  
                 $temp2 .= $this->request->getData('unite');

                   //conversion en strings

                    $temp3 = (string)$temp2; 
                  //on additionne la durée temp3 sur la date debut 

                   $temp4 = $temp1->parse( $temp3 );

                    $abonnement = $this->Abonnements->patchEntity( $abonnement , $this->request->getData() );

                     $abonnement->fin_periode = $temp4 ;

                 if ($this->Abonnements->save( $abonnement )) 
                {
                   $this->Flash->success(__('Votre abonnement a été crée.'));

                  return $this->redirect(['action' => 'index']);

                            }
                            else
                            {

                                  $this->Flash->error(__('Impossible de créer votre abonnement.'));

                              }
                  }
      $this->set('abonnement', $abonnement );
  }
j'obtiens : INSERT INTO abonnements (fin_periode) VALUES (:c0) comme erreur.
Je m'excuse si le code est déformé car c'est via un smart phone .

Merci