X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FManual%2FTutorial.pod;h=d69d30092170979f967748c75024540690001f52;hb=4d583dd846a0ffa9bd224014f89df39db957c35f;hp=5b0e973ef95585425cbc3f57585eed807b12c3f0;hpb=67dde50d182d6dc1d9c2fed3ec6b4ff3384bb56d;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Manual/Tutorial.pod b/lib/Catalyst/Manual/Tutorial.pod index 5b0e973..d69d300 100644 --- a/lib/Catalyst/Manual/Tutorial.pod +++ b/lib/Catalyst/Manual/Tutorial.pod @@ -1,851 +1,522 @@ =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 -The first step is to install Catalyst, and the simplest way to do this -is to install the Catalyst bundle from CPAN: - $ perl -MCPAN -e 'install Task::Catalyst' +=head2 Part 5: Authorization -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 -L, especially if you are -on a system that lacks a compiler. +=over 4 +=item * -=head2 The very basics - Setting up the skeleton application. +BASIC AUTHORIZATION -Catalyst includes a helper script, C, that will set up a -skeleton application for you: +=over 4 - $ catalyst tutorial +=item * - created "tutorial" - created "tutorial/script" - ... output snipped - created "tutorial/script/tutorial_create.pl" +Update Plugins to Include Support Authorization -This creates the directory structure, populated with skeleton -files. +=item * -=head2 Testing out the skeleton application +Add Config Information for Authorization -You can test out your new application by running the server script that -Catalyst provides: +=item * - $ cd tutorial - $ script/tutorial_server.pl +Add Role-Specific Logic to the ``Book List'' Template - [...] [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.66 - You can connect to your server at http://localhost:3000 +Limit Books::add to admin Users -(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.) +=item * -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): +Try Out Authentication And Authorization - $ telnet localhost 3000 - Trying 127.0.0.1... - Connected to localhost. - Escape character is '^]'. - GET / HTTP/1.0 +=back - 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.66 +=item * - [...] - Connection closed by foreign host. - $ +ENABLE ACL-BASED AUTHORIZATION -You can see the full welcome message by visiting -http://localhost:3000/ with your browser. +=over 4 -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 the Catalyst::Plugin::Authorization::ACL Plugin -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