Bonjour à tous,

J'ai appris à utiliser Paginate comme ceci

$this->paginate = array('Article'=>array('limit'=>10,'order'=>'created DESC'));
        $d'articles']=$this->Paginate('Article',array('type'=>'article','online >=0'));
        $this->set($d);

Dans un autre cas, j'aimerais utiliser $d pour stoquer mon résultat par categorie, comme ceci

$this->paginate = array('Publication'=>array('limit'=>50,'order'=>'year DESC'));
        $d'journal']=$this->Paginate('Publication',array('publicationscat_id'=> 1));        
        $d'book']=$this->Paginate('Publication',array('publicationscat_id'=> 2));
        $d'research']=$this->Paginate('Publication',array('publicationscat_id'=> 3));
        $d'paper']=$this->Paginate('Publication',array('publicationscat_id'=> 4));
        $d'chapter']=$this->Paginate('Publication',array('publicationscat_id'=> 5));
        $d'poster']=$this->Paginate('Publication',array('publicationscat_id'=> 6));
        $d'anything']=$this->Paginate('Publication',array('publicationscat_id'=> 7));

Mais voilà, quand je garde que $d[journal], mon admin_index me retourne plein de publications avec la pagination,
quand je garde les autres $d], il ne m'en retourne que 50

rs-ce que ma maniere de faire, est juste?

5 réponses


Tu veux faire plusieurs paginations dans la même page ?

Non,, heu oui.
En faite, vu qu'il y a des categories, dans la page admin_index, je pensais faire des tabs par categorie (il y aenv. 800 publications pourr 7 categories
Pour chaque tab il y aura un foreach pour une categorie, et une bar de pagination en bas de page donc en fait peut etre oui.

mon admin_index commence par

<?php foreach($journal as $k => $v) : $v = current($v); ?>

car je cherche a afficher ce qui correspond a

$d'journal']=$this->Paginate('Publication',array('publicationscat_id'=> 1));

mais il n en affiche que 10, alors qu'il y a en bien plus

Après je pense faire un autre

<?php foreach($book as $k => $v) : $v = current($v); ?>

pour

$d'book']=$this->Paginate('Publication',array('publicationscat_id'=> 2));

et en bas de page, j'ai

<ul class="pagination">
    <li class="arrow"><a href="">«</a></li>
<?php 
    // To change the pagination, go to PageController, then look at function admin_index()
    //echo $this->Paginator->numbers(); 
    echo $this->Paginator->numbers(array('separator'=>'', 'tag'=>'li','currentTag'=>'a')); // Separator tag
?>
<li class="arrow"><a href="">»</a></li>
</ul>

Quoi, en fait il m'en affiche 10, c'est normal, mais c'est le paginator qui ne fonctionne pas, en fait.

Tu vas avoir du mal à faire plusieurs paginations, car tu seras obligé de paramétrer le Helper Paginator pour passer dans l'url, l'id de la catégorie en plus du numéro de page.
Il vaut mieux que tu fasse des find à la riqueur, bien que le le mieux c'est quand même de faire avec un GROUP BY par catégorie,avec un limit pour les articles et sur chaque catégorie tu fais un lien qui renvoi sur une page secondaire dans laquelle tu pourra plus facilement faire une pagination par catégorie.