Bonjour
J'ai besoin de votre aide, car après avoir parcouru toute la doc et cherché sur internet je suis toujours bloqué au même point sur mon projet depuis un certain temps ...
A l'origine j'ai un formulaire que voici :
model :
le controller :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?php class Post extends AppModel{ public $validate = array( 'ref' => array( 'rule' => '/^RFC-[0-9]{4,6}$/', 'message' => 'Référence non valide' ) ); } ?>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 function editrapport($id = null){ if($this->request->is('put') || $this->request->is('post')){ if($this->Post->save($this->request->data)){ $this->Session->setFlash("L'opération a bien été modifiée","notif"); $this->redirect(array('action'=>'index')); } }elseif($id){ $this->Post->id = $id; $this->request->data = $this->Post->read(); } }
et le formulaire (j'ai simplifié le code en enlevant tout le bootstrap (label et compagnie) pour que ça soit plus claire) :
Donc ce formulaire enregistre un "post" dans ma table post avec un id, un intervenant, une référence, une date de début et une durée.
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
20
21
22
23
24
25
26
27 <?php echo $this->Form->create('Post', array('class' => 'form-horizontal')); ?> <fieldset> <legend><?php echo __('Rapport d\'opération'); ?></legend> <?php echo $this->Form->input('ref'); ?> <?php echo $this->Form->input('intervenant'); ?> <?php echo $this->Form->input('id'); ?> <?php echo $this->Form->input('begindate'); ?> <?php echo $this->Form->input('duration'); ?> </fieldset> <?php $options = array( 'class' => 'btn btn-primary btn-large', 'label' => 'Enregistrer', 'value' => 'Update!', 'div' => array( 'class' => 'form-actions', ) ); echo $this->Form->end($options); ?>
Et on m'a maintenant demandé d'ajouter, sur ce formulaire, une checkbox, qui lorsqu'elle est coché, incrémente un compte appartenant à l'intervenant par la valeur de la durée. (par exemple si la durée est 60 et que l'intervenant est Tartempion, si il coche la checkbox, lors de la validation du formulaire son compte est augmenter de +60).
J'aurais besoin donc de votre aide pour m'aiguiller sur la piste à suivre car malgré avoir lu la doc, j'ai du mal à visualiser la chose ^^
J'ai créer une table counters, contenant 2 champs : intervenant(varchar) et value(int).
Vu que mes 2 tables contiennent le champ intervenant, je les ai lié par un relation counters hasmany posts et posts belongsto counters. Puis j'ai essayé, déjà sans la checkbox, de faire apparaitre le champs Counter.value donc mon formulaire et d'essayer de le modifier en entrant une valeur et en sauvegardant. mais déjà cette étape me pose souci.
Donc j'aurais plusieurs questions :
- Suis-je déjà obligé de mettre des relations entre mes tables pour pouvoir les utiliser dans le même formulaire ?
- Comment faire pour avoir mon input de counters dans mon formulaire posts ?
- Comment faire, avec ou sans relation, pour que la sauvegarde s'effectue sur tous les champs ?
En espérant que vous pourrez m'apporter une réponse, car j'ai beau lire la docs dans tout les sens, je ne trouve pas de ...
Cordialement,
Partager