sub base : Chained('/'): PathPart('book'): CaptureArgs(0) {
my ( $self, $c, ) = @_;
$c->stash(book_rs => $c->model('TestDB::book'));
}
sub letter : Chained('base'): PathPart(''): Args(1) {
my ($self, $c, $letter) = @_;
my $book_rs = $c->stash{book_rs};
if ( $letter =~ /[a-zA-Z]/ )
{
my $paged_results = $book_rs->search( { name => {'like', "$let
+ter%"}} , {page => 1, rows => 25} );
my $pager = $paged_results->pager;
$c->stash(
books => $paged_results,
page => $pager->current_page,
template => 'book_list.tt');
}
else
{
$c->stash(error => "Invalid Letter",
template => 'book_list.tt');
}
}
sub page : Chained('letter'): PathPart(''): Args(1) {
my ($self, $c, $letter, $page) = @_;
my $book_rs = $c->stash{book_rs};
if ($letter =~ /[a-zA-Z]/)
{
if($page =~ /\d/)
{
my $paged_results = $book_rs->search( { name => {'like', "
+$letter%"}} , {page => $page, rows => 25} );
my $pager = $paged_results->pager;
$c->stash(
books => $paged_results,
page => $pager->current_page,
template => 'book_list.tt');
}
else
{
my $paged_results = $book_rs->search( { name => {'like', "
+$letter%"}} , {page => 1, rows => 25} );
my $pager = $paged_results->pager;
$c->stash(
books => $paged_results,
page => $pager->current_page,
error => "Invalid Page",
template => 'book_list.tt');
}
}
else
{
$c->stash(error => "Invalid Letter",
template => 'book_list.tt');
}
}