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:
Cela fonctionne bien mais le problème se situe au niveau de l'action add du contrôleur ( $abonnement->fin_periode = $temp4 ;
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(); ?>
)
voici l'action add de mon controller
j'obtiens : INSERT INTO abonnements (fin_periode) VALUES (:c0) comme erreur.
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 ); }
Je m'excuse si le code est déformé car c'est via un smart phone .
Merci
Partager