2012-06-20 5 views

답변

8

:CaptureArgs(N)은 최소한 N 개 args가 남아 있으면 일치합니다. 체인이 아닌 핸들러에 사용됩니다.

:Args(N)은 정확히 N 개의 인수가있는 경우에만 일치합니다. 예를 들어

,

sub catalog : Chained : CaptureArgs(1) { 
    my ($self, $c, $arg) = @_; 
    ... 
} 

sub item : Chained('catalog') : Args(2) { 
    my ($self, $c, $arg1, $arg2) = @_; 
    ... 
} 

일치

/catalog/*/item/*/* 
+0

, 감사합니다. – friedo

5

CaptureArgs 촉매 체에 매인 방법에 사용된다.

Args은 연결 방법의 끝입니다. 예를 들어

:

sub base_method : Chained('/') :PathPart("account") :CaptureArgs(0) 
{ 

} 
sub after_base : Chained('base_method') :PathPart("org") :CaptureArgs(2) 
{ 

} 
sub base_end : Chained('after_base') :PathPart("edit") :Args(1) 
{ 

} 

연쇄 방법 위는 /account/org/*/*/edit/* 일치합니다.

여기서 base_end은 체인의 끝 방법입니다. Args이 표시됩니다. CaptureArgs이 사용되면 체인이 계속 진행 중임을 의미합니다.

Args 또한 방법에 대한 논증을 구체화하기위한 촉매의 다른 방법에 사용된다. CPAN Catalyst::DispatchType::Chained에서 또한

: 멋지게 그것을 정리할

The endpoint of the chain specifies how many arguments it 
gets through the Args attribute. :Args(0) would be none at all, 
:Args without an integer would be unlimited. The path parts that 
aren't endpoints are using CaptureArgs to specify how many parameters 
they expect to receive.