昨日の続きであるが、ルーティングの設定はZendFrameworkとは比べものにならないくらい簡単に終わった。2とは比べるレベルになく、1よりも簡単で、/fuel/app/config/routes.phpに1設定につき1行追加していくだけでルーティングの設定ができた。
最低限の設定しかしていないので、デフォルト値や、書式設定などが未完であるが、とりあえず、ZendFrameworkで作った時と同じURLでアクセス可能な状態に持って行けるようになった。
2ページ目に取り掛かり、こちらもすぐにできたが、こちらはページングを行うものを選んだ。
fuelPHPではPaginationクラスを使う。複数の方法、使い方があるようであるが、configを設定して、forgeする使い方にした。
まずは、次のようにオブジェクトを生成する。
$config = array(
‘uri_segment’ => 3,
‘num_links’ => 10,
‘per_page’ => 100,
‘total_items’ => $total,
‘show_first’ => true,
‘show_last’ => true,
);
$pagination = Pagination::forge(‘trackspagination’, $config);
$pagination->offset = $page;
$view->set_safe(‘pagination’, $pagination->render());
オプションにはURLの指定もあるのであるが、指定無しとして「自動生成」で上手く動作している。$total変数は別途SQLで取得したデータの総件数である。show_first, show_lastは先頭ページへ、最終ページへのリンクを表示するオプションである。
offsetに指定している$pageは現在ページを保持している変数である。
$pagination->render()で、オプション含めた全てのpaginationが文字列形式(HTML)で出力されるので、これをビューでそのまま出力すればよい。
デフォルトのpaginationの表示では、現在表示しているページに対するリンクを#でリンクする(例:htttp://localhost/controler/action/pageの時、http://localhost/#になる)。これであると、XAMPPでは間違えて現在ページのリンクを踏むと再表示ではなく、XAMPPのページに飛んでしまうので、リンクを無効にしたかった。
これをカスタマイズするには、/fuel/core/config/pagination.phpを/fuel/app/config/pagination.phpにコピーして、必要なところだけを書き換える。
書き換えたところを列挙すると、defaultを使っているのであるが、
‘first-inactive’ => “\n««\n\n”,
‘first-inactive-link’ => “”,
‘previous-inactive’ => “\n«\n\n”,
‘previous-inactive-link’ => “\t\t{page}\n”,
‘active’ => “\n\t{link}\n\n”,
‘active-link’ => “\t\t{page}\n”,
‘next-inactive’ => “ \n”,
‘next-inactive-link’ => “\t\t{page}\n”,
‘last-inactive’ => “\n»»\n\n”,
‘last-inactive-link’ => “”,
となる。これらが、無効になって欲しいリンクの指定になるので、リンクにならないようにaタグを除去した形にした。書式には変更をしていない。
CSSを調整していないので、表示が小さく、使いにくいのであるが、表示まではできた段階、ということで、まとめておく。
コメント