Bonjour à toutes et à tous,
J'ai suivi le tutoriel pour construire un blog. Merci à l'auteur. Dans ce tutoriel une seule catégorie peut être affecté à un article mais dans mon cas c'est différent.
J'ai une table Posts. Chaque post peut être relier à une ou plusieurs catégories. Une catégorie peut appartenir à plusieurs posts.
En terme de MCD cela donne ceci (en simplifié).
posts(id, title, content)
categories(id, name)
categories_post(category_id, post_id)
Voici mes deux models (situé dans app/models)
class Post extends AppModel{
var $hasAndBelongsToMany = array('Category');
}
class Category extends AppModel{
var $hasAndBelongsToMany = array('Post');
}
Et mon PostController :
class PostsController extends AppController{
var $paginate = array(
'Post' => array(
'limit' => 1,
'order' => array('Post.created' => 'Desc')
)
);
function index(){
$posts_list = $this->paginate('Post');
$this->set('posts_list', $posts_list);
}
function category($category_id = null){
if($category_id != null){
$this->Post->bindModel(array('hasOne' => array('CategoriesPost')));
$posts_list = $this->Post->find('all', array(
'conditions' => array('CategoriesPost.category_id' => $category_id)
));
$this->set('posts_list', $posts_list);
$this->render('index');
}
}
}
Mes catégories sont listés dans une page et lorsque je clique sur une catégorie, j'affiche les posts relatifs à cette catégorie avec la méthode
function category ($category_id = null){}
Seulement du coup la pagination ne fonctionne plus. J'aimerais donc réutiliser la pagination en prenant en compte ce tri préalable.
Je me doute bien qu'il faille redéfinir paginate dans la fonction category mais je ne sais pas comment faire avec plusieurs catégories.
Avez-vous une idée ?
Merci de votre aide.
De la même façon que tu as fais dans la methode index() , utilises
$this->paginate();
en lui passant en parametre l'id de la categorie que tu récupére.
Perso j'utilise cette solution qui fonctionne très bien: http://www.formation-cakephp.com/213/pagination-habtm