On 04/02/2013 10:07 PM, Alex Povolotsky wrote:
> Hello!
> 
> I'm implementing some sort of simple CRM, and I'd like to handle a chain
> like
> 
> /domain/*/service/*/edit with controller
> App::Controller::Domain::Service, not with App::Controller::Domain
> 
> How can I set CaptureArgs for the whole
> App::Controller::Domain::Service? I'd like to handle captured arg
> somewhere in begin or auto
> 
> Alex
> 
> 
> 
> _______________________________________________
> List: Catalyst@lists.scsys.co.uk
> Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
> Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
> Dev site: http://dev.catalyst.perl.org/

Hi,

short answer: you can't!

Args and CaptureArgs are always specific to an action. It is not
possible (and doesn't make sense)  to define CaptureArgs for the whole
Controller.

But:

You can create a empty action, and chain all actions in your controller
to that actions, like this:

  sub mybase :Chained("/") :PathPart("") :CaptureArgs(2) {};

  sub foo :Chained('mybase') Args(0){
        #do foo
  }

  sub bar :Chained('mybase') Args(0){
        # do bar
  }


You can even create a BUILDARGS method which ensures that all your
actions are chained to that base action (if you don't want to do this by
yourself). But I would not recomment this.


If you realy  want to process your args and capture args in begin or
auto (for whatever reason) you can just do so. Args can be found in
$c->req->arguments and captures in $c->req->captures.

cheers, Lukas

_______________________________________________
List: Catalyst@lists.scsys.co.uk
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
Dev site: http://dev.catalyst.perl.org/

Reply via email to