[Catalyst] RFC: Chained actions with PathPart('.')

Brian Cassidy brian.cassidy at nald.ca
Thu Mar 22 19:13:49 GMT 2007


Brian Kirkbride wrote:
> Hello all,
> 
> The one thing that has been bothering me is that to start a chain in 
> some controller, say MyApp::C::Admin::Services you would need to declare:
> 
>   sub get_id : Chained('/') : PathPart('/admin/services') : 
> CaptureArgs(1) {
>   # stash the id or do some lookup
>   }
> 
> It's most likely my ignorance showing, but this seems redundant and not 
> very DRY.  That's why I'd suggest that PathPart('.') set a chained 
> action's PathPart to the namespace on the controller.  That way you 
> could simply do:
> 
>   sub get_id : Chained('/') : PathPart('.') : CaptureArgs(1) {}
> 

Perhaps you're looking for PathPrefix (coming to a new Catalyst near you 
... eventually -- it's in svn now.). For now, do this:

sub _parse_PathPrefix_attr {
     my ( $self, $c, $name, $value ) = @_;
     return PathPart => $self->path_prefix;
}

sub get_id : Chained('/') PathPrefix CaptureArgs(1) { }

You can put the "_parse_PathPrefix_attr" sub in a base controller and 
all of your controllers will have access to it.

-Brian



More information about the Catalyst mailing list