[Catalyst] Not sure how to go about this ... or if this idea
is even a good one ...
Joe Landman
landman at scalableinformatics.com
Sun Feb 10 07:38:45 GMT 2008
Hate replying to myself, but neither method seems to work.
Will need to look at this more ... it seems really simple, which means I
am missing the obvious.
Joe Landman wrote:
>
> Ok, starting to want to play with Chained actions for an app, and I am
> not sure they are the right fit. Possibly a round peg in this
> particular square hole.
>
> Here is what I want to do. I want to capture 0, 1, or 2 arguments on
> the URL.
>
> If 0 args, then forward over to one method.
>
> If 1 arg, then forward over to a specific method
>
> If 2 args, then forward over to a different specific method.
>
> I don't want to go beyond 2 args for this, but you should get the idea.
>
> This is sort of a drill-in type application.
>
> Ok. Does chained make sense for this versus
>
> sub do_stuff : Path('/') {
> my ($self, $c, @my_args) = @_;
>
> if ($#my_args == -1)
> {
> $c->forward('zero_args');
> }
> elsif ($#my_args == 0)
> {
> $c->forward('one_arg', at my_args);
> }
> elsif ($#my_args == 1)
> {
> $c->forward('two_arg', at my_args);
> }
> }
>
> The issue in this case is that I won't know the value of the first or
> second arg in advance (they are coming from a database). So I am not
> sure if I can do something like
>
> # root action - captures one argument after it
> sub zero : Path('/') {
> my ( $self, $c ) = @_;
> ...
> }
>
> sub one_arg : Chained('/') PathPart('') CaptureArgs(1) {
> my ( $self, $c, $foo_arg ) = @_;
> ...
> }
>
> sub two_arg : Chained('/') PathPart('') CaptureArgs(2) {
> my ( $self, $c, $foo_arg, $bar_arg) = @_;
> ...
> }
>
> that is, the particular sub to execute is a function not of the path,
> but of the number of arguments.
>
> Is this a job for chained?
>
> --
> Joe Landman
> landman at scalableinformatics.com
More information about the Catalyst
mailing list