CakePHP - Sayfalandırma

Çok büyük bir veri kümesi göstermek istiyorsak, sayfalandırmayı kullanabiliriz ve bu özellik kullanımı çok kolay olan php 4 pastası ile kullanılabilir.

Aşağıdaki verileri içeren "makaleler" başlıklı bir tablomuz var -

Verileri bir arada göstermek yerine sayfalar halinde görüntülemek için sayfalamayı kullanalım.

Misal

Aşağıdaki programda gösterildiği gibi config / route.php dosyasında Değişiklikler yapın.

config / route.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();
});

Oluşturmak PostsController.php dosya src/Controller/PostsController.php.Aşağıdaki kodu denetleyici dosyasında kopyalayın. Zaten oluşturulmuşsa, yoksay.

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

Makaleler tablosundaki veriler - kullanılarak getirilir

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

Sayfalandırmayı uygulamak için verileri kayıt başına 3 ile gösteririz ve aynısı aşağıdaki gibi yapılır -

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

Bu üzerinde etkinleştir sayfalandırmaya yeterlidir makaleleri tablolar.

Bir dizin oluşturun Posts -de src/Template ve bu dizinin altında bir Viewindex.php adlı dosya. Aşağıdaki kodu o dosyaya kopyalayın.

src / Şablon / Yazılar / 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>

Sayfaların listesi için sayfalandırma şu şekilde yapılır -

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

Aşağıdaki URL'yi ziyaret ederek yukarıdaki örneği yürütün -

http: // localhost / cakephp4 / gönderi

Çıktı

Kodu çalıştırdığınızda, aşağıdaki çıktıyı göreceksiniz -

Bir sonraki sayfaya geçmek için aşağıdaki sayılara tıklayın veya sonraki veya önceki düğmeyi kullanın.

For example

Tarayıcıdaki sayfa url'sine sayfa = 2'nin eklendiğini göreceksiniz.