Bonsoir.
$this->paginate = array('limit' => 5,
'order' => array('Post.id ASC'),
'conditions' => array('Post.online' => 1,),
'contain' => array(
'Category' => array(
'fields' => array('Category.name','Category.slug','Category.description'),
'conditions' => array('Category.slug' => $slug)
),
'Image'));
Par contre, là ça ne fait que te retourner les catégories par rapport au slug, si tu veux limiter également les articles par rapport au slug de la catégorie, il vaut mieux que tu le fasse depuis le controller Categories en faisant l'inverse, c'est à dire récupérer les catégories par rapport au slug transmis et faire un contain des posts.
Enfin, je veux plutôt dire, que vu que tu veux faire un paginate des posts, dans ce cas là tu es obligé de le faire en deux requêtes.
La première qui retrouve la catégorie qui correspond au slug avec un find('first'), et avec le retour de celle-ci, tu récupères l'ID de la catégorie en question et tu fais un paginate avec comme condition le category_id.
Quelque chose comme ça :
$category_id = $this->Post->Category->findBySlug($slug);
$posts = $this->paginate = array('limit' => 5,
'order' => array('Post.id ASC'),
'conditions' => array('Post.online' => 1, 'Post.category_id' => $category_id),
'contain' => array('Image'));