« 「Ajax Hacks」10月5日発売 | メイン | plaggerプロセスたまり杉 »

Class::DBI::Pagerすげぇ便利

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 %]

トラックバック

このエントリーのトラックバックURL:
http://yusukebe.com/mt/mt-tb.cgi/1957

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


ブログSEO対策:track word seo