ページネーション (2/5)
作成:2015-10-10 09:27
更新:2015-10-10 09:27
更新:2015-10-10 09:27
■コントローラーを修正する
では、PersonContoller.phpを作成しましょう。下のリスト欄に掲載しておきますので、この通りに書き換えて下さい。
修正したら、http://localhost:8765/persons にアクセスして表示を確認しましょう。Pagenatorを利用してエンティティが取得され、一覧表示されます。(ただし、まだ問題があります。これについては後述)
ここでは、initializeとindexの2つのメソッドを用意しています。それぞれの処理を見てみましょう。
●initializeメソッド
まず、parent::initialize();でスーパークラスのinitializeを呼び出した後、Paginatorコンポーネントのロードを行っています。
●indexメソッド
実際に表示するエンティティの取得を行っているのがindexアクションですね。ここで行っているのは、たったの1文のみです。
……ただし、実際にためしてみるとわかりますが、このままだとページ分けはされず、すべてのエンティティがずらっと表示されるだけになってしまいます。つまり、肝心の「ページ分け」がされないのです。
修正したら、http://localhost:8765/persons にアクセスして表示を確認しましょう。Pagenatorを利用してエンティティが取得され、一覧表示されます。(ただし、まだ問題があります。これについては後述)
ここでは、initializeとindexの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()); } }
※関連コンテンツ
「初心者のためのCakePHP3 プログラミング入門」に戻る