Removed Persistent Perl from cookbook
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Manual / Intro.pod
index 4cdbb21..8e58d7f 100644 (file)
@@ -234,10 +234,10 @@ The last of these, the stash, is a universal hash for sharing data among applica
     sub hello : Global {
         my ( $self, $c ) = @_;
         $c->stash->{message} = 'Hello World!';
-        $c->forward('show-message');
+        $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:
@@ -373,16 +399,16 @@ You control the application flow with the C<forward> method, which accepts the k
     sub hello : Global {
         my ( $self, $c ) = @_;
         $c->stash->{message} = 'Hello World!';
-        $c->forward('check-message');
+        $c->forward('check_message');
     }
 
-    sub check-message : Private {
+    sub check_message : Private {
         my ( $self, $c ) = @_;
         return unless $c->stash->{message};
-        $c->forward('show-message');
+        $c->forward('show_message');
     }
 
-    sub show-message : Private {
+    sub show_message : Private {
         my ( $self, $c ) = @_;
         $c->res->output( $c->stash->{message} );
     }