Fixed: Minor typo in Intro.pod
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Manual / Intro.pod
index 4cdbb21..28a08d6 100644 (file)
@@ -237,7 +237,7 @@ The last of these, the stash, is a universal hash for sharing data among applica
         $c->forward('show-message');
     }
 
-    show-message : Private {
+    sub show-message : Private {
         my ( $self, $c ) = @_;
         $c->res->output( $c->stash->{message} );
     }
@@ -325,28 +325,54 @@ Called at the end of a request, after all matching actions are called.
     sub begin : Private { }
     sub default : Private { }
 
-You can define the Builtin Private Actions within your controllers as well. Default actions will override the ones in lower level controllers/global, while begin/end actions will be chained together, so if you have a default action in MyApp::C::Foo::Bar as well as a global one, and a global begin/end, as well as a begin end in MyApp::C::Foo and MyApp::C::Foo::Bar, the components will be called as follows:
+You can define the Builtin Private Actions within your controllers as 
+well. The actions will override the ones in lower level controllers/
+global.
+
+In addition to the normal builtins, you have a special action for 
+making inheritance chains, 'auto'. These will be run after begin, 
+but before your action is processed.
 
 =over 4
 
 =item for a request for /foo/foo
 
   MyApp::begin
-  MyApp::default
+  MyApp::auto
+  MyApp::C::Foo::default
   MyApp::end
 
 =item for a request for /foo/bar/foo
 
-  MyApp::begin
-  MyApp::C::Foo::begin
   MyApp::C::Foo::Bar::begin
+  MyApp::auto
+  MyApp::C::Foo::auto
   MyApp::C::Foo::Bar::default
   MyApp::C::Foo::Bar::end
-  MyApp::C::Foo::end
-  MyApp::end
 
 =back
 
+Also, if you need to break out of the chain in one of your auto 
+actions, you can return 0, if so, your action will not be processed,
+but the end will, so for the request above, if the first auto returns
+false, it would look like this:
+
+=over 4
+
+=item for a request for /foo/bar/foo where auto returns false
+
+  MyApp::C::Foo::Bar::begin
+  MyApp::auto
+  MyApp::C::Foo::Bar::end
+
+=back
+
+I<Note:> auto actions have to return a true value to continue processing!
+You can also die in the autochain action, in that case,
+the request will go straight to the finalize stage, without processing
+further actions.
+
+
 =head4 B<URL Argument Handling>
 
 If you want to pass variable arguments at the end of a URL, you must use regex actions keys with '^' and '$' anchors, and the arguments must be separated with forward slashes (/) in the URL. For example, suppose you want to handle /foo/$bar/$baz, where $bar and $baz may vary: