SYNOPSIS

  package CD;
  use base qw(Class::DBI);
  _\|_PACKAGE_\|_->set_db(...);

  use Class::DBI::Pager;        # just use it

  # then, in client code!
  package main;

  use CD;
  my $pager = CD->pager(20, 1);     # ($items_per_page, $current_page)
  my @disks = $pager->retrieve_all;

DESCRIPTION

Class::DBI::Pager is a plugin for Class::DBI, which glues Data::Page with Class::DBI. This module reduces your work a lot, for example when you have to do something like:

* retrieve objects from a database * display objects with 20 items per page

In addition, your work will be reduced more, when you use Template-Toolkit as your templating engine. See \*(L"\s-1EXAMPLE\s0\*(R" for details.

EXAMPLE

# Controller: (MVC's C) my $query = CGI->new; my $template = Template->new;

my $pager = Film->pager(20, $query->param('page') || 1); my $movies = $pager->retrieve_all; $template->process($input, { movies => $movies, pager => $pager, });

# View: (MVC's V) Matched [% pager.total_entries %] items.

[% WHILE (movie = movies.next) %] Title: [% movie.title | html %] [% END %]

### navigation like: [1] [2] [3] [% FOREACH num = [pager.first_page .. pager.last_page] %] [% IF num == pager.current_page %][[% num %]] [% ELSE %]<a href="display?page=[% num %]">[[% num %]]</a>[% END %] [% END %]

### navigation like: prev 20 | next 20 [% IF pager.previous_page %] <a href="display?page=[% pager.previous_page %]"> prev [% pager.entries_per_page %]</a> | [% END %] [% IF pager.next_page %] <a href="display?page=[% pager.next_page %]"> next [% pager.entries_per_page %]</a> [% END %]

NOTE / TODO

This modules internally retrieves itertors, then creates \*(C`Data::Page\*(C' object for paging utility. Using \s-1SQL\s0 clauses \*(C`LIMIT\*(C' and/or \*(C`OFFSET\*(C' with \*(C`DBIx::Pager\*(C' might be more memory efficient.

AUTHOR

Tatsuhiko Miyagawa <[email protected]>

Original idea by Tomohiro Ikebe <[email protected]>

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

RELATED TO Class::DBI::Pager…

Class::DBI, Data::Page