Bonjour à tous !
Je voudrais filtrer les données d'une vue index pour un controller Occupations
Dans ma vue index j'ai donc par defaut un tableau avec toutes les occupations.
Je voudrais pouvoir afficher seulement celles qui sont "en cours" et celles qui sont "terminées" en cliquant sur des boutons citués au dessus de mon tableau.
La méthode que j'utilise pour le moment est de creer 3 liens dans ma vue :
<p>
<span><?php echo $this->Html->link(__('En cours', true), array('action' => 'filter_active')); ?></span>
<span><?php echo $this->Html->link(__('Terminées', true), array('action' => 'filter_active')); ?></span>
<span><?php echo $this->Html->link(__('Tout', true), array('action' => 'index')); ?></span>
</p>
qui renvoies vers 3 actions de mon controller Occupations :
public function index() {
// similaire à un findAll(), mais récupère les résultats paginés
$data = $this->Paginator->paginate('Occupation');
$this->set('data', $data);
}
// filtre pour l'index - Locations en cours
public function filter_active() {
$data = $this->Paginator->paginate(
'Occupation',
array('Occupation.sortie' => null)
);
$this->set('data', $data);
}
// filtre pour l'index - Locations terminées
public function filter_older() {
$data = $this->Paginator->paginate(
'Occupation',
array('Occupation.sortie' != null)
);
$this->set('data', $data);
}
Il me reste donc à créer les vues correspondantes pour afficher les résultats mais n'y à t'il pas une meilleure méthode ? comme peut être tout gérer directement dans la fonction index de mon controller Occupation et tout afficher dans la vue index correspondante ? Je dois pouvoir récupérer le clic du lien avec un GET dans mon action index, non ?
Merci d'avance pour vos avis éclairés.