X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FManual%2FIntro.pod;h=002640263af9383b1748dd911826be1b8616fd99;hb=baf5120b807f1be08f251e0916046ccec0cdc2d4;hp=65c633dd74fcf16d35c8b0237ccf7c7457713c1b;hpb=fabf3a100d2255ee3d0d4f7af57b57cd658feceb;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Manual/Intro.pod b/lib/Catalyst/Manual/Intro.pod index 65c633d..0026402 100644 --- a/lib/Catalyst/Manual/Intro.pod +++ b/lib/Catalyst/Manual/Intro.pod @@ -80,7 +80,7 @@ multiple Catalyst applications. =item * B -Catalyst allows you to dispatch any URLs to any application L, +Catalyst allows you to dispatch any URLs to any application L, even through regular expressions! Unlike most other frameworks, it doesn't require mod_rewrite or class and method names in URLs. @@ -110,7 +110,7 @@ simple way. =item * B Components interoperate very smoothly. For example, Catalyst -automatically makes a L object available to every +automatically makes a L object available to every component. Via the context, you can access the request object, share data between components, and control the flow of your application. Building a Catalyst application feels a lot like snapping @@ -161,6 +161,10 @@ running, using the helper scripts described above. Now visit these locations with your favorite browser or user agent to see Catalyst in action: +(NOTE: Although we create a controller here, we don't actually use it. +Both of these URLs should take you to the welcome page.) + + =over 4 =item http://localhost:3000/ @@ -223,7 +227,7 @@ C<$context-Econfig-E{$param_name}>. Catalyst automatically blesses a Context object into your application class and makes it available everywhere in your application. Use the -Context to directly interact with Catalyst and glue your L +Context to directly interact with Catalyst and glue your L together. For example, if you need to use the Context from within a Template Toolkit template, it's already there: @@ -373,9 +377,9 @@ http://localhost:3000/catalog/foo/widget23 as well. For both LocalRegex and Regex actions, if you use capturing parentheses to extract values within the matching URL, those values are available in -the C<$c-Ereq-Esnippets> array. In the above example, "widget23" +the C<$c-Ereq-Ecaptures> array. In the above example, "widget23" would capture "23" in the above example, and -C<$c-Ereq-Esnippets-E[0]> would be "23". If you want to pass +C<$c-Ereq-Ecaptures-E[0]> would be "23". If you want to pass arguments at the end of your URL, you must use regex action keys. See L below. @@ -419,6 +423,21 @@ C controller must, if called from elsewhere, be reached with C<$c-Eforward('/catalog/order/process/bar')>. +=item * B + +Args is not an action type per se, but an action modifier - it adds a match +restriction to any action it's provided to, requiring only as many path parts +as are specified for the action to be valid - for example in +MyApp::Controller::Foo, + + sub bar :Local + +would match any URL starting /foo/bar/. To restrict this you can do + + sub bar :Local :Args(1) + +to only match /foo/bar/*/ + =back B After seeing these examples, you probably wonder what the point @@ -440,7 +459,7 @@ displaying a generic frontpage for the main app, or an error page for individual controllers. If C isn't acting how you would expect, look at using a -L C action (with an empty path string). The difference is +L C action (with an empty path string). The difference is that C takes arguments relative from the namespace and C I takes arguments relative from the root, regardless of what controller it's in. @@ -679,7 +698,7 @@ method. =head3 Components Catalyst has an uncommonly flexible component system. You can define as -many L, L, and L as you like. +many L, L, and L as you like. All components must inherit from L, which provides a simple class structure and some common class methods like C and @@ -845,7 +864,7 @@ Catalyst that slurps in an outside Model: use base qw/Catalyst::Model::DBIC::Schema/; __PACKAGE__->config( schema_class => 'Some::DBIC::Schema', - connect_info => ['dbi:SQLite:foo.db', '', '', {AutoCommit=>1}]; + connect_info => ['dbi:SQLite:foo.db', '', '', {AutoCommit=>1}] ); 1;