Bonjour à tous,
Voila j'ai décidé de faire un filtre sur mon site de cocktails.
Pour ce faire, à chaque clic d'une catégorie dans mon filtre, ça exécute un code javascript qui fait appel à chaque fois à la fonction filter() qui se trouve dans mon CocktailsController.php. Voici son contenu :
Et mon filter.ctp correspondant :
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 function filter(){ if(isset($_POST['categories'])){ $term_id = $_POST['categories']; foreach($term_id as $k => $v){ $termR = $this->Cocktail->TermR->find('list', array( 'fields' => array('ref_id'), 'conditions' => array('TermR.term_id' => $v) )); foreach($termR as $w => $x){ $d['cocktails'] = $this->Cocktail->find('all', array('conditions' => array('Cocktail.id' => $x))); $this->set($d); } } } else{ $this->paginate = array('Cocktail' => array('limit' => 10)); $cocktails = $this->Paginate('Cocktail', array('Cocktail.online' => 1, 'Cocktail.created <= NOW()')); $this->set($d); } }
Le problème c'est que dès qu'il y a plusieurs cocktails à retourner, et bien seul le dernier résultat est pris en compte. En fait en faisant des debug je me suis vite aperçu qu'à chaque appelle de la fonction filter(), le foreach écrasait mes anciennes données à chaque fois. Seul le dernier résultat est pris en compte donc.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <?php if(!empty($cocktails)): ?> <?php foreach($cocktails as $k => $v): $v = current($v); ?> <?php echo $v['name']; ?> <a href="<?php echo $this->Html->url($v['link']); ?>" class="btn primary">Consulter</a><br> <?php endforeach; ?> <?php endif; ?>
Je comprend très bien le problème donc mais je ne vois pas du tout comment faire pour y remédier.
Je m'en remet donc à vous car je sèche depuis déjà plusieurs jours sans trouver la solution.
J'espère que j'ai donner tout les éléments nécessaires pour que vous puissiez bien comprendre mon problème.
Merci en tous les cas de votre aide.
Partager