[Catalyst] uri_with and ACCEPT_CONTEXT
    Dermot 
    paikkos at googlemail.com
       
    Thu Jan  7 19:23:05 GMT 2010
    
    
  
Hi,
I have a page which lists lots of items.  I need links on the page
that will alter the number of items per page and to do page
navigation. I want the code for the page navigation in my non-catalyst
class. I'm using C::Model::Factory at the moment, but I might need to
use PerRequest. The uri_with() looks like it could really conveniently
alter the url EG:
for ( qw/12 24 48 96/ ) {
    link = $c->uri_with( per_page => $_);
}
I hope I've understood what uri_with does! Should I be able to take
the current url and substitue http://host.domain.com/list?per_page=12
-> http://host.domain.com/list?per_page=24...etc?
I tried the recipe from the latest book but the config part is
tripping me up. $self is not available to the Model's config
(__PACKAGE__->config) and I am not sure how I can. You can't declare
$self as a package variable, it has to be a class before it's args()
is called.
=======  MyApp::Model::Lister =========
use parent 'Catalyst::Model::Factory';
use Moose;
use namespace::autoclean;
__PACKAGE__->config(
        class       => 'MyApp::Local::Class',
        args        => { arg    =>  $self->arg};     # Global symbol
"$self" requires...
        );
sub ACCEPT_CONTEXT {
    my ($self, $c) = @_;
    my $new = $self->meta->clone_object($self, arg => $c->uri_with('') );
    $new = $self->meta->clone_object($self, arg => $c->req->path  );
    return $new;
}
=============================
Again, I'm a little unsure here because I want to take uri_with into
MyApp::Local::Class and use it there. Is that what ACCEPT_CONTEXT can
do? Can anyone tell me how I can get $self into the config or is there
some other way to get args into the constructor?
Thanks,
Dp.
    
    
More information about the Catalyst
mailing list