2012-06-20 3 views

Antwort

8

:CaptureArgs(N) wenn mindestens N Args übrig sind. Es wird für nicht terminierte Chained-Handler verwendet.

:Args(N) passt nur, wenn genau N Argumente übrig sind.

Zum Beispiel

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

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

Streichhölzer

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

dass es schön aufräumt, danke. – friedo

5

CaptureArgs in Chained Methoden in Katalysator verwendet.

Args markiert das Ende der verketteten Methode.

Für Ex:

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) 
{ 

} 

Above gekettet Methoden entsprechen /account/org/*/*/edit/*.

Hier base_end ist die Endmethode der Kette. Um das Ende der Kettenaktion zu markieren, wird Args verwendet. Wenn CaptureArgs verwendet wird, bedeutet das, dass die Kette noch läuft.

Args wird auch in anderen Methoden des Katalysators zur Angabe von Argumenten zur Methode verwendet.

Auch von 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. 
Verwandte Themen