CakePHP - Pagination

Si nous voulons montrer un ensemble de données énorme, nous pouvons utiliser la pagination et cette fonctionnalité est disponible avec cake php 4 qui est très facile à utiliser.

Nous avons un tableau intitulé «articles» avec les données suivantes -

Utilisons la pagination pour afficher les données sous forme de pages, au lieu de les montrer toutes ensemble.

Exemple

Apportez des modifications au fichier config / routes.php comme indiqué dans le programme suivant.

config / routes.php

<?php
use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
   $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
      'httpOnly' => true,
   ]));
   $builder->applyMiddleware('csrf');
   //$builder->connect('/pages',['controller'=>'Pages','action'=>'display', 'home']);
   $builder->connect('posts',['controller'=>'Posts','action'=>'index']);
   $builder->fallbacks();
});

Créer un PostsController.php déposer à src/Controller/PostsController.php.Copiez le code suivant dans le fichier du contrôleur. Ignorer, si déjà créé.

src / Controller / PostsController.php

<?php
   namespace App\Controller;
   use App\Controller\AppController;
   class PostsController extends AppController {
      public function index(){
         $this->loadModel('articles');
         $articles = $this->articles->find('all')->order(['articles.id ASC']);
         $this->set('articles', $this->paginate($articles, ['limit'=> '3']));
      }
   }
?>

Les données de la table articles sont récupérées en utilisant -

$this->loadModel('articles');
$articles = $this->articles->find('all')->order(['articles.id ASC']);

Pour appliquer la pagination et nous montrerions les données avec 3 par enregistrements et la même chose est faite comme suit -

$this->set('articles', $this->paginate($articles, ['limit'=> '3']));

Cela suffit pour activer la pagination sur les tableaux d' articles .

Créer un annuaire Posts à src/Template et sous ce répertoire, créez un Viewfichier appelé index.php. Copiez le code suivant dans ce fichier.

src / Template / Posts / index.php

<div>
<?php foreach ($articles as $key=>$article) {?>
<a href="#">
   <div>
   <p><?= $article->title ?> </p>
   <p><?= $article->details ?></p>
   </div>
</a>
<br/>
<?php
}
?>
<ul class="pagination">
<?= $this->Paginator->prev("<<") ?>
<?= $this->Paginator->numbers() ?>
<?= $this->Paginator->next(">>") ?>
</ul>
</div>

La pagination de la liste des pages se fait comme suit -

<ul class="pagination">
<?= $this->Paginator->prev("<<") ?>
<?= $this->Paginator->numbers() ?>
<?= $this->Paginator->next(">>") ?>
</ul>

Exécutez l'exemple ci-dessus en visitant l'URL suivante -

http: // localhost / cakephp4 / posts

Production

Lorsque vous exécutez le code, vous verrez la sortie suivante -

Cliquez sur les chiffres ci-dessous pour passer à la page suivante ou utilisez le bouton suivant ou précédent.

For example

Vous verrez que page = 2 est ajouté à l'URL de la page dans le navigateur.