(no commit message)
Kennedy Clark [Tue, 27 May 2008 14:55:13 +0000 (14:55 +0000)]
lib/Catalyst/Manual/Tutorial/Authentication.pod
lib/Catalyst/Manual/Tutorial/CatalystBasics.pod
lib/Catalyst/Manual/Tutorial/MoreCatalystBasics.pod

index 7e002a8..1c3b9b8 100644 (file)
@@ -357,9 +357,11 @@ you could have a C<User> controller with both C<login> and C<logout>
 actions.  Remember, Catalyst is designed to be very flexible, and leaves
 such matters up to you, the designer and programmer.
 
-Then open C<lib/MyApp/Controller/Login.pm>, locate the C<sub index : 
-Private> method (this was automatically inserted by the helpers when we 
-created the Login controller above), and delete this line:
+Then open C<lib/MyApp/Controller/Login.pm>, locate the C<sub index 
+:Path :Args(0)> method (or C<sub index : Private> if you are using an 
+older version of Catalyst) that was automatically inserted by the 
+helpers when we created the Login controller above, and delete this 
+line:
 
     $c->response->body('Matched MyApp::Controller::Login in Login.');
 
@@ -371,7 +373,7 @@ Then update it to match:
     
     =cut
     
-    sub index : Private {
+    sub index :Path :Args(0) {
         my ($self, $c) = @_;
     
         # Get the username and password from form
@@ -403,22 +405,21 @@ will stay at the login page but receive an error message.  If the
 C<username> and C<password> values are not present in the form, the 
 user will be taken to the empty login form.
 
-Note that we could have used something like C<sub default :Private>; 
-however, the use of C<default> actions is discouraged because it does
-not receive path args as with other actions.  The recommended practice 
-is to only use C<default> in C<MyApp::Controller::Root>.
-
-Another option would be to use something like 
-C<sub base :Path :Args(0) {...}> (where the C<...> refers to the login 
-code shown in C<sub index : Private> above). We are using C<sub base 
-:Path :Args(0) {...}> here to specifically match the URL C</login>. 
-C<Path> actions (aka, "literal actions") create URI matches relative to 
-the namespace of the controller where they are defined.  Although 
-C<Path> supports arguments that allow relative and absolute paths to be 
-defined, here we use an empty C<Path> definition to match on just the 
-name of the controller itself.  The method name, C<base>, is arbitrary. 
-We make the match even more specific with the C<:Args(0)> action 
-modifier -- this forces the match on I<only> C</login>, not 
+Note that we could have used something like C<sub default :Path> (or 
+even C<sub default : Private>; however, the use of C<default> actions 
+is discouraged because it does not receive path args as with other 
+actions.  The recommended practice is to only use C<default> in 
+C<MyApp::Controller::Root>.
+
+Instead, we are using C<sub base :Path :Args(0) {...}> here to 
+specifically match the URL C</login>. C<Path> actions (aka, "literal 
+actions") create URI matches relative to the namespace of the 
+controller where they are defined.  Although C<Path> supports 
+arguments that allow relative and absolute paths to be defined, here 
+we use an empty C<Path> definition to match on just the name of the 
+controller itself.  The method name, C<index>, is arbitrary. We make 
+the match even more specific with the C<:Args(0)> action modifier --
+this forces the match on I<only> C</login>, not 
 C</login/somethingelse>.
 
 Next, update the corresponding method in 
@@ -430,7 +431,7 @@ C<lib/MyApp/Controller/Logout.pm> to match:
     
     =cut
     
-    sub index : Private {
+    sub index :Path :Args(0) {
         my ($self, $c) = @_;
     
         # Clear the user's state
index 2d7eb7b..02a45ca 100644 (file)
@@ -242,7 +242,7 @@ responsible for displaying the welcome screen that you just saw in
 your browser. Later on you'll want to change that to something more 
 reasonable, such as a "404" message but for now just leave it alone.
 
-    sub default : Path : Args {
+    sub default :Path :Args {
         my ( $self, $c ) = @_;
     
         $c->response->body( $c->welcome_message );
@@ -260,7 +260,7 @@ L<Catalyst::Response|Catalyst::Response>), while C<$c->welcome_message>
 is a special method that returns the welcome message that you saw in 
 your browser.
 
-The ": Path : Args" after the method name are attributes which determine 
+The ":Path :Args" after the method name are attributes which determine 
 which URLs will be dispatched to this method. (Depending on your version of 
 Catalyst, it used to say "Private" but using that with default is 
 currently deprecated.)
index 1bcb2c0..cc2fbd7 100644 (file)
@@ -275,12 +275,12 @@ B<Note:> Catalyst actions are regular Perl methods, but they make use
 of Nicholas Clark's C<attributes> module (that's the C<: Local> next 
 to the C<sub list> in the code above) to provide additional 
 information to the Catalyst dispatcher logic.  Many newer Catalyst 
-applications are switching to the use of "Literal" C<: Path> actions 
+applications are switching to the use of "Literal" C<:Path> actions 
 and C<Args> attribute in lieu of C<: Local> and C<: Private>.  For 
-example, C<sub any_method : Path Args(0)> can be used instead of 
+example, C<sub any_method :Path :Args(0)> can be used instead of 
 C<sub index :Private> (because no path was supplied to C<Path> it 
 matches the "empty" URL in the namespace of that module... the same 
-thing C<sub index> would do) or C<sub list : Path('list') Args(0)> 
+thing C<sub index> would do) or C<sub list :Path('list') :Args(0)> 
 could be used instead of the C<sub list : Local> above (the C<list> 
 argument to C<Path> would make it match on the URL C<list> under 
 C<books>, the namespace of the current module).  See "Action Types" in