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'); } }
[download]