Class::DBI::Pager便利! Class::DBIのPluginモジュールで、データベースにあるオブジェクトを指定した件数ずつ表示させたい時などに使う。例えばはてなブックマーク風のページングとか。
Catalystで使うときは、lib/MyApp/Model/CDBI.pmなどに
package MyApp::Model::Plagger; use strict; use base 'Catalyst::Model::CDBI'; use Class::DBI::Pager;
とuseする。Controllerではモデルのpagerメソッドで1ページあたりの件数を指定してpagerのインスタンスを作り、retrieveできる。
#Controller
my $pager = MyApp::Model::CDBI::Item->pager(20,$page);
my @items = $pager->retrieve_all;
$c->stash->{pager} = $pager;
stashでpagerを渡して、Templateでは以下のようにしたらはてブ風ページング表示が可能。
合計 [% pager.total_entries %] 件<br /> [% IF pager.previous_page %] <a href="?page=[% pager.previous_page %]"> <前の[% pager.entries_per_page %]件</a> [% END %] [% FOREACH num = [pager.first_page .. pager.last_page] %] [% IF num == pager.current_page %][% num %] [% ELSE %]<a href="?page=[% num %]">[% num %]</a>[% END %] [% END %] [% IF pager.next_page %] <a href="?page=[% pager.next_page %]"> 次の[% pager.entries_per_page %]件></a> [% END %]

