Posted by & filed under FuelPHP, PHP, Tech.

One Way
One Way / bredgur

CodeIgniter にはあったこの Pagination 機能、移行組としてはやはりないのは気になる。
FuelPHP には「次」「前」のようなリンクはあれど「最初」「最後」のようなリンクはありませんでした。

なければ作るのがお作法ということで Core の Pagination クラスを拡張してみたメモ。

ads

 

ci-pagination
from CodeIgniter

 

解説

際立って何かをしているわけではなく、単純に Core クラスにある

  • next_link
  • prev_link

を改造しました。

現在のページが1ページ目でなければ、「最初」リンクが常時出現し、
現在のページが最終ページより前であれば、「最後」リンクを常時出現させています。

ポイントは Core クラス内の initialize メソッド。このメソッドの中で 呼び出し元(コントローラ)で設定した config 項目が各メンバ変数に格納されるので、地道にダンプしてみるとよくわかると思います。

 

完成イメージはコチラ。

fuel-pagination

 

今回の拡張クラスを github の練習を兼ねて公開してみたので、もしもお役に立てるならば…
/fuel/ ディレクトリ以下、拡張したファイルのみの構成になっているので
普段お使いの FuelPHP アプリケーションのディレクトリに設置してください。

 

また、Core の拡張をしているのでオートローダの設定をお忘れなく。

diff --git a/fuel/app/bootstrap.php b/fuel/app/bootstrap.php
--- a/fuel/app/bootstrap.php
+++ b/fuel/app/bootstrap.php

 Autoloader::add_classes(array(
     // Add classes you want to override here
     // Example: 'View' => APPPATH.'classes/view.php',
+    'Pagination' => APPPATH.'classes/pagination.php',
 ));

 

なお、拡張した Pagination クラスでは static::$template の初期値を Core にならって設定してありますがTwitter Bootstrap を使うと表示崩れがあったため
FuelPHPでTwitterBootStrapのページネーションをきれいに表示する

を流用させていただきました。

設定は config ファイルで $template 設定のみ行っています。
config 設定の説明はこちらの記事でしています。

あとがき

ページネーションの概念として、「最初」リンクと「最後」リンクは
なくて困ることはないでしょうが、CodeIgniter にあって FuelPHP にないということは、不要物としてそぎ落とされたんですかね..?

Related Posts Plugin for WordPress, Blogger...

Leave a Reply

  • (will not be published)