X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FManual%2FTutorial.pod;h=91d11acc7743c79e78506caa74119f871818cdfb;hb=64ccd8a8bfbc16276c044c94702b1440c2897695;hp=798b51c3abdb116233cc1fbb242624c68dcd37ca;hpb=56d8daebfb3b83c215625ae0fd3fddce455851c6;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Manual/Tutorial.pod b/lib/Catalyst/Manual/Tutorial.pod index 798b51c..91d11ac 100644 --- a/lib/Catalyst/Manual/Tutorial.pod +++ b/lib/Catalyst/Manual/Tutorial.pod @@ -1,849 +1,521 @@ =head1 NAME -Catalyst::Manual::Tutorial - Getting started with Catalyst +Catalyst::Manual::Tutorial - Catalyst Tutorial: Overview + + =head1 DESCRIPTION -This document aims to get you up and running with Catalyst. +The Catalyst framework is a flexible and comprehensive environment for +quickly building high-functionality web applications. This tutorial is +design to provide a rapid introduction to its basics and most commonly +used features while focusing on real-world best practices. + +The tutorial is broken down into the following sections: + +=over 4 + +=item * + +L + +=item * + +L + +=item * + +L + +=item * + +L + +=item * + +L + +=item * + +L + +=item * + +L + +=item * + +L + +=item * + +L + +=back + + +Full source code is available for each section via the main Catalyst +Subversion repository at +L. See the +end of each section for the specifics on retrieving code for that +section. + +A tarball of the final application is available at +C. + +=head1 Detailed Table Of Contents + +=head2 Part 1: Introduction + +=over 4 + +=item * + +VERSIONS AND CONVENTIONS USED IN THIS TUTORIAL + +=item * + +CATALYST INSTALLATION + +=item * + +DATABASES + +=item * + +WHERE TO GET WORKING CODE + +=back + + +=head2 Part 2: Catalyst Application Development Basics + +=over 4 + +=item * + +CREATE A CATALYST PROJECT + +=item * + +CREATE A SQLITE DATABASE + +=item * + +EDIT THE LIST OF CATALYST PLUGINS + +=item * + +DATABASE ACCESS WITH DBIx::Class + +=over 4 + +=item * + +Create a DBIC Schema File + +=item * + +Create the DBIC ``Result Source'' Files + +=item * + +Use Catalyst::Model::DBIC::Schema To Load The Model Class + +=back + +=item * + +CREATE A CATALYST CONTROLLER + +=item * + +CATALYST VIEWS + +=over 4 + +=item * + +Create a Catalyst View Using TTSITE + +=item * + +Globally Customize Every View + +=item * + +Create a TT Template Page + +=back + +=item * + +RUN THE APPLICATION + +=back + + +=head2 Part 3: Basic CRUD + +=over 4 + +=item * + +FORMLESS SUBMISSION + +=over 4 + +=item * + +Include a Create Action in the Books Controller + +=item * + +Include a Template for the url_create Action: + +=item * + +Try the url_create Feature + +=back + +=item * + +MANUALLY BUILDING A CREATE FORM + +=over 4 + +=item * + +Add Method to Display The Form + +=item * + +Add a Template for the Form + +=item * + +Add Method to Process Form Values and Update Database + +=item * + +Test Out The Form + +=back + +=item * + +A SIMPLE DELETE FEATURE + +=over 4 + +=item * + +Include a Delete Link in the List + +=item * + +Add a Delete Action to the Controller + +=item * + +Try the Delete Feature + +=back + +=back + + +=head2 Part 4: Authentication + +=over 4 + +=item * + +BASIC AUTHENTICATION + +=over 4 + +=item * + +Add Users and Roles to the Database + +=item * + +Add User and Role Information to DBIC Schema + +=item * + +Create New ``Result Source Objects'' + +=item * + +Sanity-Check Reload of Development Server + +=item * + +Include Authentication and Session Plugins + +=item * + +Configure Authentication + +=item * + +Add Login and Logout Controllers + +=item * + +Add a Login Form TT Template Page + +=item * + +Add Valid User Check + +=item * + +Displaying Content Only to Authenticated Users + +=item * + +Try Out Authentication + +=back + +=item * + +USING PASSWORD HASHES + +=over 4 + +=item * + +Get a SHA-1 Hash for the Password + +=item * + +Switch to SHA-1 Password Hashes in the Database + +=item * + +Enable SHA-1 Hash Passwords in Catalyst::Plugin::Authentication::Store::DBIC + +=item * + +Try Out the Hashed Passwords + +=back + +=back + -=head2 Installation +=head2 Part 5: Authorization -The first step is to install Catalyst, and the simplest way to do this -is to install the Catalyst bundle from CPAN: +=over 4 - $ perl -MCPAN -e 'install Task::Catalyst' +=item * -This will retrieve Catalyst and a number of useful extensions and -install them for you. This process might not be totally painless -though, and you might want to look at CatInABox at -L, especially if you are -on a system that lacks a compiler. +BASIC AUTHORIZATION +=over 4 -=head2 The very basics - Setting up the skeleton application. +=item * -Catalyst includes a helper script, C, that will set up a -skeleton application for you: +Update Plugins to Include Support for Authorization - $ catalyst.pl tutorial +=item * - created "tutorial" - created "tutorial/script" - ... output snipped - created "tutorial/script/tutorial_create.pl" +Add Config Information for Authorization -This creates the directory structure, populated with skeleton -files. +=item * -=head2 Testing out the skeleton application +Add Role-Specific Logic to the ``Book List'' Template -You can test out your new application by running the server script that -Catalyst provides: +=item * - $ cd tutorial - $ script/tutorial_server.pl +Limit Books::add to admin Users - [...] [catalyst] [debug] Debug messages enabled - [...] [catalyst] [debug] Loaded plugins: - .------------------------------------------------------------------------------. - | Catalyst::Plugin::Static::Simple | - '------------------------------------------------------------------------------' - [...] [catalyst] [debug] Loaded dispatcher "Catalyst::Dispatcher" - [...] [catalyst] [debug] Loaded engine "Catalyst::Engine::HTTP" - [...] [catalyst] [debug] Found home "/home/users/me/tutorial" - [...] [catalyst] [debug] Loaded Private actions: - .--------------------------------------+---------------------------------------. - | Private | Class | - +--------------------------------------+---------------------------------------+ - | /default | tutorial | - '--------------------------------------+---------------------------------------' +=item * - [...] [catalyst] [info] tutorial powered by Catalyst 5.67 - You can connect to your server at http://localhost:3000 +Try Out Authentication And Authorization -(Note that each line logged by Catalyst begins with a timestamp, which has -been replaced here with "C<...>" so that the text fits onto the lines.) +=back -The server is now waiting for you to make requests of it. Try using -telnet to manually make a simple GET request of the server (when -telnet responds with "Escape character is '^]'.", type "GET / HTTP/1.0" -and hit return twice): +=item * - $ telnet localhost 3000 - Trying 127.0.0.1... - Connected to localhost. - Escape character is '^]'. - GET / HTTP/1.0 +ENABLE ACL-BASED AUTHORIZATION - HTTP/1.0 200 OK - Date: Mon, 07 Nov 2005 14:57:39 GMT - Content-Length: 5525 - Content-Type: text/html; charset=utf-8 - Status: 200 - X-Catalyst: 5.67 +=over 4 - [...] - Connection closed by foreign host. - $ +=item * -You can see the full welcome message by visiting -http://localhost:3000/ with your browser. +Add the Catalyst::Plugin::Authorization::ACL Plugin -More trace messages will appear in the original terminal window: +=item * - [...] [catalyst] [debug] ********************************** - [...] [catalyst] [debug] * Request 1 (0.063/s) [2148] - [...] [catalyst] [debug] ********************************** - [...] [catalyst] [debug] Arguments are "" - [...] [catalyst] [debug] "GET" request for "" from localhost - [...] [catalyst] [info] Request took 0.046883s (21.330/s) - .------------------------------------------------------------------+-----------. - | Action | Time | - +------------------------------------------------------------------+-----------+ - | /default | 0.000000s | - '------------------------------------------------------------------+-----------' +Add ACL Rules to the Application Class -The server will continue running until you interrupt it. +=item * -The application can also be tested from the command line using the generated -helper script, C