Moved Chained intro to dispatch type and made recursion test more sane.
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Manual / Intro.pod
index 910c4c0..44a80b4 100644 (file)
@@ -349,12 +349,8 @@ this:
     }
     1;
 
-
 =back
 
-For most applications, Catalyst requires you to define only one config
-parameter:
-
 =head4 Action types
 
 Catalyst supports several types of actions:
@@ -421,54 +417,6 @@ C<$c-E<gt>req-E<gt>captures-E<gt>[0]> would be "23". If you want to pass
 arguments at the end of your URL, you must use regex action keys. See
 L</URL Path Handling> below.
 
-=item * B<ChildOf>
-
-    sub section :PathPart('section') :ChildOf('/') :Captures(1) { }
-
-ChildOf is a powerful way to handle canonical URIs of the form 
-/section/1/item/2 
-
-Taking the above URI as an example in Controller::Root you can do the following :-
-
-       sub section_handler :PathPart('section') :ChildOf('/') :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) {
-               my ( $self, $c ) = @_;
-               $c->stash->{'item'} = $c->stash->{'section'}->find_related('item',$c->args->[0]);
-       }
-
-The subroutine section_handler matched the path segment 'section' as a child of '/'. It 
-then took the next path segment, as referenced by :Captures(1) and stashed it in the 
-arrayref $c->req->captures. Since there was also a child of this handler - it also gets run.
-The same rules apply here - This time however it has the 'Args' attribute which means
-this particular routine will run if there is exactly 1 argument. See Args below for more 
-options.
-
-=item ChildOf('xyz')
-
-The action of the parent - for instance, if you have method item_handler in controller
-SuperMarket::Aisle, the action would be /supermarket/aisle/item_handler. For a root handler
-this would be '/'.
-
-=item PathPart('xyz')
-
-The name of this path section in the ChildOf tree mapping to the URI.
-
-=item Captures(int)
-
-Will 'collapse' the next x path segments in the request URI and push them into 
-the arrayref $c->req->captures
-
-=item Args(int)
-
-The number of path segments to capture at the end of a request URI. This *must* be
-included in your leaf nodes. You can use Args(0) for an equivalent of the index
-action.
-Args with no parameters will capture every postfixed segment into $c->req->args.
-
 =item * B<Top-level> (B<Global>)
 
     package MyApp::Controller::Foo;
@@ -496,6 +444,24 @@ Catalyst ("MyApp::Controller" in the above example), replaces "::" with
 explanation of the pre-defined meaning of Catalyst component class
 names.
 
+=item * B<Chained>
+
+Catalyst also provides a method to build and dispatch chains of actions,
+like
+
+    sub foo : Chained : CaptureArgs(1) {
+        my ( $self, $c, $arg ) = @_;
+        ...
+    }
+
+    sub bar : Chained('foo') : Args(1) {
+        my ( $self, $c, $arg ) = @_;
+        ...
+    }
+
+to handle a C</foo/*/bar/*> path. For more information about this dispatch
+type, please read L<Catalyst::DispatchType::Chained>.
+
 =item * B<Private>
 
     sub foo : Private { }
@@ -528,10 +494,6 @@ would match any URL starting /foo/bar/. To restrict this you can do
 
 to only match /foo/bar/*/
 
-=item * B<PathPart>, B<Captures> and B<ChildOf>
-
-Matt is an idiot and hasn't documented this yet.
-
 =back
 
 B<Note:> After seeing these examples, you probably wonder what the point