[Catalyst] Quesion about Chaining usage

John Napiorkowski jjn1056 at yahoo.com
Tue Sep 5 02:58:52 CEST 2006

I've notices what I think is somewhat strange behavior
in a chain I've created, although as usual it might
just be my ignorance.  Here's is a skeleton of the
chain I made:

package myapp::Controller::Feedrolls

sub feedrolls :Chained('/') CaptureArgs(0){}

sub feedrolls_all :Chained('feedrolls') PathPart('')
Args(0) {}

sub feedroll :Chained('feedrolls') PathPart('')
CaptureArgs(1) { my ($self, $c, $captured) = @_; }

sub feedroll_all :Chained('feedroll') PathPart('')
Args(0) {}

When I run catalyst I get a mapping like this:

(1) /feedrolls/*
(2) /feedrolls

(1) chains from feedrolls to feedroll to feedroll_all
and (2) chains from feedrolls to feedrolls_all.

Okay so far so good.  However when I try to call the
action through the browser at
"http://localhost/feedrolls" I get an error about the
$captured variable being undefined, which is strange
to me since I am thinking that to get to the
containing sub I need to use an action link
"/feedrolls/[feedroll_id]".  When I look at the debug
output to see what is getting called I can see that
indee that chain is going from feedrolls to feedroll
to feedroll_all instead of from feedrolls to feedrolls

What is even stranger is that if I change the sub:

sub feedroll :Chained('feedrolls') PathPart('')
CaptureArgs(1) { my ($self, $c, $captured) = @_; }


sub feedroll :Chained('feedrolls') PathPart('')
Args(1) { my ($self, $c, $captured) = @_; }

and handle all the processing there instead of the way
I outlined it above, everything works as expected.

So there seems to be something strange here, since
merely terminating the chain one sub earlier changes
the ways things get called quite a bit.

So... Can anyone spot if there is something wrong in
the way I am doing this?


Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 

More information about the Catalyst mailing list