arguments at the end of your URL, you must use regex action keys. See
L</URL Path Handling> below.
-=item * B<ChildOf>
+=item * B<Chained>
- sub section :PathPart('section') :ChildOf('/') :Captures(1) { }
+ sub section :PathPart('section') :Chained('/') :Captures(1) { }
-ChildOf is a powerful way to handle canonical URIs of the form
+Chained is a powerful way to handle canonical URIs of the form
C<http://localhost:3000/section/1/item/2>. Using this URI as an example,
in Controller::Root you can do the following:
- sub section_handler :PathPart('section') :ChildOf('/') :Captures(1) {
+ sub section_handler :PathPart('section') :Chained('/') :Captures(1) {
my ( $self, $c ) = @_;
$c->stash->{'section'} =
$c->Model('Sections')->find($c->req->captures->[0]);
}
- sub item_handler :PathPart('item') :ChildOf('/section_handler') :Args(1) {
+ sub item_handler :PathPart('item') :Chained('/section_handler') :Args(1) {
my ( $self, $c ) = @_;
$c->stash->{'item'} =
$c->stash->{'section'}->find_related('item',$c->args->[0]);
A parent action can be in any controller or namespace.
-Multiple actions can specify the same parent action in their C<ChildOf>;
+Multiple actions can specify the same parent action in their C<Chained>;
that is, one action can have multiple children.
-=item ChildOf('xyz')
+=item Chained('xyz')
The action of the parent. For instance, if you have a method
C<item_handler> in the controller C<SuperMarket::Aisle>, the action
would be C</supermarket/aisle/item_handler>. For a Root handler this
would be '/'. For an action in the same controller namespace you can use
-a relative name like C<:ChildOf('foo')>.
+a relative name like C<:Chained('foo')>.
=item PathPart('xyz')
-The name of this path section in the ChildOf tree mapping to the URI. If
+The name of this path section in the Chained tree mapping to the URI. If
you specify C<:PathPart> without arguments, it takes the name of the
action specifying the argument. For example, these two declarations
have the same effect:
- sub foo :PathPart('foo') :ChildOf('bar') :Args(1) {
+ sub foo :PathPart('foo') :Chained('bar') :Args(1) {
...
}
and
- sub foo :PathPart :ChildOf('bar') :Args(1) {
+ sub foo :PathPart :Chained('bar') :Args(1) {
...
}
The value can also contain a slash, for example:
- sub baz :PathPart('bar/baz') :ChildOf('/') :Captures(1) {
+ sub baz :PathPart('bar/baz') :Chained('/') :Captures(1) {
...
}
Will 'collapse' the next C<integer> path segments in the request URI and
push them into the arrayref C<$c-E<gt>req-E<gt>captures>. An action
-specifying C<Captures> is thought to be used as target for C<ChildOf>
+specifying C<Captures> is thought to be used as target for C<Chained>
specifications. Also see the C<Args> attribute below, which is used for
endpoints.
every postfixed segment into C<$c-E<gt>req-E<gt>args>.
A specification of C<Args> is seen as endpoint in regard to an additional
-C<ChildOf> specification.
+C<Chained> specification.
=item * B<Top-level> (B<Global>)