ページネーション (4/5)
作成:2015-10-10 09:34
更新:2015-10-10 09:34
更新:2015-10-10 09:34
■Paginatorヘルパーによるページリンク
ページネーションによるページ分け表示は、思ったよりも簡単にできました。が、これで終わりではありません。これでは、「最初のページ」を表示するだけしかできませんね。ページ分けをするなら、ページを移動するための機能も用意しないといけません。
これも、実は簡単です。CakePHP3には、「Paginatorヘルパー」というヘルパーが用意されています。
「ヘルパー」というのは、ビュー(テンプレート)での表示を支援してくれるプログラムです。前にフォームヘルパー(フォームの生成を支援するヘルパー)を使ってフォームを作成しましたね。あれと同じように、ページ移動のリンク作成を支援してくれるのがPaginatorヘルパーです。
では、実際にこれを使ってページ移動のリンクを用意しましょう。テンプレート(index.ctp)を開き、適当なところに、下のリスト欄のタグを記述して下さい。これでページをリロードすれば、ページ移動のリンクが表示されます。「next >>」をクリックすれば次のページに進むし、「<< prev」で前のページに戻ることができます。(ちょっと表示が縦一列になって見づらいですが、この問題は次に処理します)
ここでは、$this->Paginatorというものにあるメソッドを呼び出していますね。この$this->Paginatorが、Paginatorヘルパーのオブジェクトが設定されているプロパティです。ここでは以下のようなメソッドを使っています。
●前のページに戻るリンク
●次のページに進むリンク
●最初のページに戻るリンク
●最後のページに進むリンク
●ページ番号のリンク
――とりあえず、これぐらいを覚えておけば、ページ移動のリンク生成が簡単に行えるようになるでしょう。
これも、実は簡単です。CakePHP3には、「Paginatorヘルパー」というヘルパーが用意されています。
「ヘルパー」というのは、ビュー(テンプレート)での表示を支援してくれるプログラムです。前にフォームヘルパー(フォームの生成を支援するヘルパー)を使ってフォームを作成しましたね。あれと同じように、ページ移動のリンク作成を支援してくれるのがPaginatorヘルパーです。
では、実際にこれを使ってページ移動のリンクを用意しましょう。テンプレート(index.ctp)を開き、適当なところに、下のリスト欄のタグを記述して下さい。これでページをリロードすれば、ページ移動のリンクが表示されます。「next >>」をクリックすれば次のページに進むし、「<< prev」で前のページに戻ることができます。(ちょっと表示が縦一列になって見づらいですが、この問題は次に処理します)
ここでは、$this->Paginatorというものにあるメソッドを呼び出していますね。この$this->Paginatorが、Paginatorヘルパーのオブジェクトが設定されているプロパティです。ここでは以下のようなメソッドを使っています。
●前のページに戻るリンク
<?= $this->Paginator->prev( 表示テキスト ); ?>前のページに戻るためのリンクを生成します。引数には、リンクに表示するテキストを指定します。
●次のページに進むリンク
<?= $this->Paginator->next( 表示テキスト ); ?>次のページに戻るためのリンクを生成します。やはり引数にはリンクに表示するテキストを指定します。
●最初のページに戻るリンク
<?= $this->Paginator->first( 表示テキスト ); ?>最初のページに戻るリンクを生成します。これは、最初のページが表示されているときは自動的に非表示になります。
●最後のページに進むリンク
<?= $this->Paginator->last( 表示テキスト ); ?>最後のページに進むリンクを生成します。これは、最後のページが表示されているときは自動的に非表示になります。
●ページ番号のリンク
<?= $this->Paginator->numbers(); ?>これは、表示されているページの前後のページ番号のリンクを自動的に表示するものです。
――とりあえず、これぐらいを覚えておけば、ページ移動のリンク生成が簡単に行えるようになるでしょう。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
<?= $this->Paginator->first('<<first'); ?> <?= $this->Paginator->prev('<prev'); ?> <?= $this->Paginator->numbers(); ?> <?= $this->Paginator->next('next>'); ?> <?= $this->Paginator->last('last>>'); ?>
※関連コンテンツ
「初心者のためのCakePHP3 プログラミング入門」に戻る