Bonjour,
Je rencontre un léger problème avec le composant paginator.
Après avoir regardé la documentation + la video de grafikart sur la pagination dans la formation je ne vois pas mon problème.
Je m'explique je veux récupérer les 5 derniers enregistrements
Quand je vais un debug il me récupére tout les enregistrements , il ne prend pas en compte le limit etc...
Voici mon code dans mon controller :

public $components = array('Paginator');

public $paginate=array(
    'limit' => 5,
    'order' =>  array('Competition.created ASC'),

    'paramType'=>'queryString'

    )

public function admin_index(){

    $competitions=$this->paginate('Competition');

    $this->set(compact('competitions'));

}

4 réponses


Bonjour.

Une fois que la variable $paginate à été définie, nous pouvons utiliser la méthode paginate() du PaginatorComponent de l’action de notre controller. Ceci retournera les résultats du find() depuis le model. Il définit également quelques paramètres de pagination supplémentaires, qui sont ajoutés à l’objet request. L’information supplémentaire est définie dans $this->request->params['paging'], et est utilisée par PaginatorHelper pour la création des liens. PaginatorComponent::paginate() ajoute aussi PaginatorHelper à la liste des helpers dans votre controller, si il n’a pas déjà été ajouté:

public function list_recipes() {
    $this->Paginator->settings = $this->paginate;

    // similaire à un findAll(), mais récupère les résultats paginés
    $data = $this->Paginator->paginate('Recipe');
    $this->set('data', $data);
}

Dans la documentation de CakePHP, c'est différent de ce que tu as mis dans ton code concernant la méthode dans l'action correspondante.
Comme tu peux le voir, il n'y a pas de :


$this->paginate(/* Model */);
TikenJah
Auteur

J'aI déjà essayé avec cette méthode il me retourne une erreur des que je rentre du travail je posterais l'erreur .
Merci de ta réponse .

TikenJah
Auteur

Voici les erreurs que j'obtiens :

Notice (8): Undefined variable: request [CORE\Cake\Controller\Component\PaginatorComponent.php, line 290]

Warning (2): array_intersect_key() [function.array-intersect-key]: Argument #1 is not an array

[CORE\Cake\Controller\Component\PaginatorComponent.php, line 290]

Warning (2): array_merge() [function.array-merge]: Argument #2 is not an array

[CORE\Cake\Controller\Component\PaginatorComponent.php, line 291]

Notice (8): Undefined index: maxLimit [CORE\Cake\Controller\Component\PaginatorComponent.php, line 379]

Warning (2): Division by zero [CORE\Cake\Controller\Component\PaginatorComponent.php, line 187]

Notice (8): Undefined index: paramType [CORE\Cake\Controller\Component\PaginatorComponent.php, line 200]

TikenJah
Auteur

je pense avoir résolu le problème mais je ne comprend pas pourquoi , j'ai directement mis mes options dans le composant dans la fonction :
$this->Paginator->settings = array('limit'=>2);
En fait si j'utilise $paginate ça ne marche pas.... si quelqu'un sait pourquoi?