Bonjour,

je suis débudante en informatique et j'utilise le Framework CakePHP3, je rencontre un problème avec la pagination, en fait, en cliquant sur next, la deuxième page ne s'affiche pas.
mon code est le suivant:


/**
* Country Controller
*
* @property \App\Model\Table\CountryTable $Country
*/
class CountryController extends AppController
{
    //Condition de la pagination

    public $paginate = [
        'Limit' => 10, 'order'=>['IDcountry'=>'asc']
    ];

    public function initialize()
    {
        parent::initialize();
        $this->loadComponent('Paginator');
    }

    /**
     * Index method
     *
     * @return \Cake\Network\Response|null
     */
    public function index()
    {

        $this->set('country', $this->paginate($this->Country));

        $this->set(compact('country'));
        $this->set('_serialize', ['country']);
    }

mon idex est: 

<div class="country index large-9 medium-8 columns content">
    <h3><?= __('Counrty') ?></h3>
    <table cellpadding="0" cellspacing="0">
        <thead>
            <tr>
                <th><?= $this->Paginator->sort('IDcountry') ?></th>
                <th><?= $this->Paginator->sort('country_name') ?></th>
                <th class="actions"><?= __('Actions') ?></th>
            </tr>
        </thead>
        <tbody>
            <?php foreach ($country as $country): ?>
            <tr>
                <td><?= $this->Number->format($country->IDcountry) ?></td>
                <td><?= h($country->country_name) ?></td>
                <td class="actions">
                    <?= $this->Html->link(__('View'), ['action' => 'view', $country->IDcountry]) ?>
                    <?= $this->Html->link(__('Edit'), ['action' => 'edit', $country->IDcountry]) ?>
                    <?= $this->Form->postLink(__('Delete'), ['action' => 'delete', $country->IDcountry], ['confirm' => __('Are you sure you want to delete # {0}?', $country->IDcountry)]) ?>
                </td>
            </tr>
            <?php endforeach; ?>
        </tbody>
    </table>
    <div class="paginator">
        <ul class="pagination">
            <?= $this->Paginator->prev('< ' . __('previous')) ?>
            <?= $this->Paginator->numbers() ?>
            <?= $this->Paginator->next(__('next') . ' >') ?>
        </ul>
        <p><?= $this->Paginator->counter() ?></p>
    </div>
</div>

Ce que je veux

j'ai lu sur le PaginatorHelper, mais je ne comprends pas grand choses. comment les télécharger et les configurer. Quelqu'un pourrait m aider SVP, c'est vraiment urgent et je bloque. Merci à vous !

3 réponses


Hello, je ne connais pas cakephp, mais quand je vois ton code dans index, je vois que tu fais un compact de country, seulement tu as aucune variable se nommant country dans ta fonction. Essai de remplacer

$this->set('country', $this->paginate($this->Country));

par 

$country = $this->set('country', $this->paginate($this->Country));

je t'invite à aller regarder la doc de comptact en php : compact en php

Ils ont l'air de faire ça comme ça dans la doc : la doc ici

Mais je ne connais pas le framework donc je peux pas m'avancer sur la façon de faire. Mais leurs documentation à l'air clair.

Merci pour votre réponse, mais ça ne fonctionne pas! il me demande de créer le IDcountryHelper. j'ai téléchargé le PaginatorHelper également, mais je n'arrive pas à passer d'une page à une autre :(

Malheureusement ne connaissant pas le framework, je ne peux pas t'aider plus. Essaie de passer sur le tchat discord ici tu trouveras peut être de l'aide plus facilement ^^