i forgot <form method="POST">
2010/6/3 Oleg Pronin <syber....@gmail.com>: > <form id="myform"> > <input type="hidden" name="..." value="..."/> > ... any number of params > <input type="hidden" name="page" value="[%page%]"/> > ... > > <a href="#" onclick="$('#myform input[name=page]').val(2); > $('#myform').submit()"> > Page 2 > </a> > > </form> > > 2010/6/2 w...@serensoft.com <w...@serensoft.com>: >> Short version: >> Using [% c.req.uri_with({ page => pager.next_page }) %] is fine for a simple >> single-field search (where the form uses GET instead of POST)... but how do >> we PAGE through (and/or cache) a multi-field form search that uses POST? >> >> Long version: >> This is probably already a posted recipe somewhere, but I haven't had much >> luck finding answers via googling combinations of 'perl catalyst post cache >> pager' ... so pointers are welcome: >> >> # Form has lots of fields, we'll just nab a sample handful from the POST: >> my @terms = map{s/\s+//; $_} split /,/, $form->field('keywords'); >> # I know, but it's just an example, this isn't a robust search-field parser >> :) >> my %search = ( >> asof => { >> # date field "asof" must be within date range >> '>=' => $form->field('start_date'), >> '<=' => $form->field('end_date'), >> }, >> terms => [ >> # field "terms" can contain any of the keywords >> map { +{ -like => '%' . $_ . '%' } } @terms >> ], >> ); >> my $page = $c->req->param('page'); >> $page = 1 if ! defined( $page ) || ! $page || $page =~ /\D/; >> my $result = $c->model('Package')->search( \%search, {page=>$page} ); >> $c->stash->{results} = $result; >> $c->stash->{pager} = $result->pager; >> >> Then, in the template: >> >> <a href="[% c.req.uri_with({page => pager.prev_page}) %]">Prev</a> >> <a href="[% c.req.uri_with({page => pager.next_page}) %]">Next</a> >> >> That works well for simple GET forms where the ?field=val syntax is used in >> the URI. >> What's the approach for paging the (cached?) query results from a >> complex-field POSTed search form? >> I'm imagining a two-table DB solution where we cache the found row-id's in >> table `cached_search_row` and link that to `cached_search`, then have the >> cached_search.id mentioned in the URI. I'm hoping there's a better way >> someone has already conjured up that doesn't have all the drawbacks of this >> approach that we haven't even thought of... >> Thanks in advance! >> >> -- >> will trillich >> "It's only by saying 'no' that you can concentrate on the things that are >> really important." -- Steve Jobs >> -- >> will trillich >> "It's only by saying 'no' that you can concentrate on the things that are >> really important." -- Steve Jobs >> >> _______________________________________________ >> List: Catalyst@lists.scsys.co.uk >> Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst >> Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/ >> Dev site: http://dev.catalyst.perl.org/ >> >> > _______________________________________________ List: Catalyst@lists.scsys.co.uk Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/ Dev site: http://dev.catalyst.perl.org/