[Catalyst] Forward on to other actions after removing first path
segment?
Dorian Taylor (Lists)
dorian.taylor.lists at gmail.com
Mon Nov 15 18:34:21 GMT 2010
Hi Ben, thanks for replying!
On 15-Nov-10, at 4:00 AM, Ben van Staveren wrote:
> You want chained actions.
>
> package MyApp;
>
> sub _date :Chained('/') CaptureArgs(1) PathPart('date') {
> my $self = shift;
> my $c = shift;
> my $date = shift;
> $c->detach('invalid_date') unless($date =~ /^\d{4}-\d{2}-\d{2}/);
> $c->stash->{date} = $date;
> }
>
> sub something_using_the_date :Chained('/date')
> PathPart('something_using_the_date') {
> my $self = shift;
> my $c = shift;
>
> $c->res->body("Hi, you were looking for date: " . $c->stash->{date});
> }
OK, just that my objective is to optionally prepend just the YYYY-MM-
DD format. The PathPart attribute looks as if it wants the actual
literal value of a path segment (in your example, 'date'). Consider:
Request-URI: /2010-11-15/foo
* MyApp::_date is triggered
* Removes the date from the first path segment and stashes it
* Forwards to MyApp::Foo::index as if it was a fresh request and the
date path segment was never there (except it is, in the stash).
The reason why I want to do this is because I also want to be able to
access /foo (aka MyApp::Foo::index) sans any date in the first path
segment, and likewise write everything else as if it was agnostic to
this behaviour. Spoken another way:
RewriteRule ^/(\d{4}-\d{2}-\d{2})(.*) /$2 [E=DATE:$1]
Does this behaviour still map to chained actions?
--
Dorian Taylor
Make things. Make sense.
http://doriantaylor.com
More information about the Catalyst
mailing list