X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Manual.git;a=blobdiff_plain;f=lib%2FCatalyst%2FManual%2FIntro.pod;h=a5acd72750e48d7f32b745a679e8e2857e2c6ad3;hp=bd9ad73f0e3456b63cb0679aada3e1626f35fc2b;hb=be3349e1a2966ee8abc15c1b9a168a3c70125ccb;hpb=a696baf692db7d3d8b1bfa844b4204b8e9a0704f diff --git a/lib/Catalyst/Manual/Intro.pod b/lib/Catalyst/Manual/Intro.pod index bd9ad73..a5acd72 100644 --- a/lib/Catalyst/Manual/Intro.pod +++ b/lib/Catalyst/Manual/Intro.pod @@ -23,7 +23,7 @@ possible to do things in a different way. Other web frameworks are I simpler to use, but achieve this by locking the programmer into a single set of tools. Catalyst's emphasis on flexibility means that you have to think more to use it. We view this as a feature. For -example, this leads to Catalyst being more suited to system integration +example, this leads to Catalyst being better suited to system integration tasks than other web frameworks. =head3 MVC @@ -53,7 +53,7 @@ L, L... =item * B Control the whole request phase, check parameters, dispatch actions, flow -control. Catalyst itself! +control. This is the meat of where Catalyst works. =back @@ -122,6 +122,12 @@ separately - which will turn the built server into a fully fledged production ready server (although you'll probably want to run it behind a front end proxy if you end up using it). +=item * PSGI Support + +Starting with Catalyst version 5.9 Catalyst ships with L integration +for even more powerful and flexible testing and deployment options. See +L for details. + =back =head3 Simplicity @@ -476,9 +482,9 @@ application. use base qw/Catalyst::Controller/; - sub login : Path("login") { } + sub sign_in : Path("sign-in") { } sub new_password : Path("new-password") { } - sub logout : Path("logout") { } + sub sign_out : Path("sign-out") { } package MyApp::Controller::Catalog; @@ -804,14 +810,18 @@ application (e.g. http://localhost:3000/ ): package MyApp::Controller::Root; use base 'Catalyst::Controller'; + # Sets the actions in this controller to be registered with no prefix # so they function identically to actions created in MyApp.pm + __PACKAGE__->config( namespace => ''); + sub default : Path { my ( $self, $context ) = @_; $context->response->status(404); $context->response->body('404 not found'); } + 1; @@ -820,9 +830,9 @@ The code __PACKAGE__->config( namespace => '' ); makes the controller act as if its namespace is empty. As you'll see -below, an empty namespace makes many of the URL-matching attributes, -such as :Path, :Local and :Global matches, match at the start of the -URL path. +below, an empty namespace makes many of the URL-matching attributes, such +as :Path and :Local match at the start of the URL path (i.e. the +application root). =back @@ -850,20 +860,30 @@ subroutine name together determine the path. =item * Root-level (C<:Global>) package MyApp::Controller::Foo; - sub foo : Global { } -Matches http://localhost:3000/foo - that is, the action is mapped -directly to the controller namespace, ignoring the function name. + sub bar : Global { + my ($self, $c) = @_; + $c->res->body( + $c->res->body('sub bar in Controller::Foo triggered on a request for ' + . $c->req->uri)); + } -C<:Global> always matches from root: it is sugar for C<:Path('/methodname')>. -C<:Local> is simply sugar for C<:Path('methodname')>, which takes the package -namespace as described above. +1; - package MyApp::Controller::Root; - __PACKAGE__->config( namespace => ''); - sub foo : Local { } +Matches http://localhost:3000/bar - that is, the action is mapped +directly to the method name, ignoring the controller namespace. + +C<:Global> always matches from the application root: it is simply +shorthandfor C<:Path('/methodname')>. C<:Local> is shorthand for +C<:Path('methodname')>, which takes the controller namespace as described +above. -Use whichever makes the most sense for your application. +Usage of the C handler is rare in all but very old Catalyst +applications (e.g. before Catalyst 5.7). The use cases where C +used to make sense are now largely replaced by the C dispatch +type, or by empty C declarations on an controller action. C +is still included in Catalyst for backwards compatibility, although +legitimate use-cases for it may still exist. =item * Changing handler behaviour: eating arguments (C<:Args>)