CakePHP - Impaginazione

Se vogliamo mostrare un insieme di dati che è enorme, possiamo usare l'impaginazione e questa funzione è disponibile con cake php 4 che è molto facile da usare.

Abbiamo una tabella intitolata "articoli" con i seguenti dati:

Usiamo l'impaginazione per visualizzare i dati sotto forma di pagine, invece di mostrarli tutti insieme.

Esempio

Apporta le modifiche nel file config / routes.php come mostrato nel seguente programma.

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();
});

Creare un PostsController.php file in src/Controller/PostsController.php.Copiare il codice seguente nel file del controller. Ignora, se già creato.

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']));
      }
   }
?>

I dati dalla tabella degli articoli vengono recuperati utilizzando -

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

Per applicare l'impaginazione e mostreremo i dati con 3 per record e lo stesso viene fatto come segue:

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

Questo è sufficiente per attivare l'impaginazione nelle tabelle degli articoli .

Crea una directory Posts a src/Template e in quella directory creare un file Viewfile chiamato index.php. Copia il codice seguente in quel file.

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>

L'impaginazione per l'elenco delle pagine viene eseguita come segue:

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

Esegui l'esempio precedente visitando il seguente URL:

http: // localhost / cakephp4 / posts

Produzione

Quando esegui il codice, vedrai il seguente output:

Fare clic sui numeri sottostanti per passare alla pagina successiva o utilizzare il pulsante successivo o precedente.

For example

Vedrai che page = 2 è aggiunto all'URL della pagina nel browser.