back

ページネーション (2/5)

■コントローラーを修正する

では、PersonContoller.phpを作成しましょう。下のリスト欄に掲載しておきますので、この通りに書き換えて下さい。

修正したら、http://localhost:8765/persons にアクセスして表示を確認しましょう。Pagenatorを利用してエンティティが取得され、一覧表示されます。(ただし、まだ問題があります。これについては後述)

ここでは、initializeindexの2つのメソッドを用意しています。それぞれの処理を見てみましょう。

●initializeメソッド
まず、parent::initialize();でスーパークラスのinitializeを呼び出した後、Paginatorコンポーネントのロードを行っています。
$this->loadComponent('Paginator');
コンポーネントのロードは、このようにinitializeで行っておくのがよいでしょう。各メソッドごとに用意するより効率的で、ロードし忘れも防げます。

●indexメソッド
実際に表示するエンティティの取得を行っているのがindexアクションですね。ここで行っているのは、たったの1文のみです。
$this->set('persons', $this->paginate());
$this->paginate()でページ分けされたエンティティを取得し、それをpersonsに設定します。後は、テンプレート側でそれらを一覧表示するだけ、というわけです。実に簡単!

……ただし、実際にためしてみるとわかりますが、このままだとページ分けはされず、すべてのエンティティがずらっと表示されるだけになってしまいます。つまり、肝心の「ページ分け」がされないのです。



(by. SYODA-Tuyano.)

※リストが表示されない場合

AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。

<?php
namespace App\Controller;

use App\Controller\AppController;
use Cake\Datasource\ConnectionManager;

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

    public function index()
    {
        $this->set('persons', $this->paginate());
    }

}



   

記事のリストに戻る



PC Site G+ mail