[Catalyst] paging with Data::Page

Anne Wainwright anotheranne at fables.co.za
Mon Jul 27 11:43:53 GMT 2009


hi, Ian

Thanks for advice, not always too keen to offload total problems for
free code input, but in this instance after lots of hours spent ...

# p.66 of Rockway Catalyst book.
# currently displaying 'x to y of z' record count, but not paging to 10
per page.

sub search : Global Form {
    my ($self, $c, $query, $pager) = @_; 
    my $form = $self->formbuilder;
# get query from the URL (or the form if there is nothing there)
    $query ||= $form->field('query')
        if ($form->submitted && $form->validate);
    return unless $query;   #no query? we're done

    $c->stash->{query} = $query;
    my @tokens = split /\s+/, $query;
#   my $result : Stashed;            # original Bindlex line
    my $result = $c->stash->{result};   # create stash entry
    if('Names' eq $form->field('domain')) {
        $result = $c->forward('search_names', \@tokens);
        $c->stash(result => $result);   # put data into stash
        $c->stash->{'template'} = 'search/name_results.tt2'
    }
    else  {	
	# note, finds in any field not just Addresses as implied
        $result = $c->forward('search_addresses', \@tokens);
        $c->stash(result => $result);   # put data into stash
        $c->stash->{'template'} = 'search/address_results.tt2'
    }
    my $page = $c->request->param('page');
    $page = 1 if($page !~ /^\d+$/);
    $result = $result->page($page);
#   my $pager : Stashed = $result->pager;   
	# original Bindlex line
    $c->stash->{pager} = $result->pager;    
	# Displays entries 'x to y of z' 
	# paging/10 if data a la Bindlex

	# but with data Bindlex code replaced 
	# is Displaying entries 'x to y of z', 
	# not paging into 10 records per page

any ideas gratefully received
Anne



More information about the Catalyst mailing list