2013-02-11 4 views
0

J'ai une page avec une liste de livres, et chaque ligne a une case à cocher. (J'utilise cakephp 1.2).
Je souhaite laisser l'utilisateur enregistrer plusieurs livres.
Pour l'instant j'ai cette case à mon avis (dans un cycle, où je reçois la liste de tous les livres):cases à cocher multiples avec cakephp 1.2

<?php echo $form->input('salva', array('value' => $cdBiblio['CdBiblio']['codiceBiblio'], 'label' => '', 'type' => 'checkbox')); ?> 

Cette forme:
<?php echo $form->create('cd_biblios', array('action' => 'save')); ?>

Et ce bouton:

<?php echo $form->end('Add All');?> 

Dans le contrôleur, j'ai quelque chose comme ça pour le débogage:

debug($this->data); 
    foreach($this->data['cd_biblios']['salva'] as $item) { 
     debug($item); 
    } 

Mais ça ne marche pas.
J'ai remarqué qu'il ne prend que le dernier livre de la liste avec debug ($ this-> data); et si je vérifie plus de 1 livre, il affiche 0 ou le dernier identifiant du livre, par exemple:

Array (
[cd_biblios] => Array 
    (
     [salva] => 0 
    )) 


RESOLU:
De l'avis J'utilise le code de Danial.

Dans le contrôleur j'utilise ce code:

if(!empty($this->data)) {    
     $item=$this->data; 
     debug($item); 
     $dim=count($item['Model']['field']); 
     $i=0; 
     for ($i=0;$i<$dim;$i++)   
      if ($item['Model']['field'][$i]!=0) 
      { 
       $data = $this->Session->read('libri'); 
       $data[] = $item['Model']['field'][$i]; 
       $this->Session->write('libri', $data); 
      } 
     $this->Session->setFlash(__('I libri sono stati salvati', true)); 
     $this->redirect($this->referer()); 
    } 

Répondre

2

En Vue:

<?php 
foreach($array as $each_elem) { 
echo $form->checkbox(
     'Model.field', 
     array(
       'id'=>'abcd_'.$each_elem['Model']['id'], 
       'value' => $each_elem['Model']['id'], 
       'hiddenField' => false, 
       'name' => 'data[Model][field][]', 
       'label' => false, 
       'div' => false, 
     )); 
} 
?> 

Sur soumettre le formulaire, vous obtiendrez les valeurs vérifiées dans le contrôleur dans $this->request->data

+0

Je reçois près avec votre code: dans le contrôleur je $ this-> données qui est le tableau de tous les livres (0 si non coché, id si coché), comment puis-je le faire fonctionner? – Ettore

1

Vous avez un problème de conception.

Vos cases à cocher doivent être à l'intérieur d'un formulaire, car ce sont des étiquettes d'entrée. Donc, pour envoyer ces valeurs au contrôleur, vous devrez soumettre ce formulaire. Dans votre code, je vois que "Ajouter tout" est juste un lien. Et un lien ne soumettra pas le formulaire.

Modifier votre lien vers un bouton :)

Hope this helps

+0

Vous avez raison, j'ai édité la question. – Ettore

Questions connexes