NAME
Class::DBI::Pager - Pager utility for Class::DBI
SYNOPSIS
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 "EXAMPLE" 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 Data::Page
object for paging utility. Using SQL clauses LIMIT
and/or OFFSET
with DBIx::Pager
might be more memory efficient.
AUTHOR
Tatsuhiko Miyagawa <miyagawa@bulknews.net>
Original idea by Tomohiro Ikebe <ikebe@cpan.org>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.