Catalyst::Manual::Tutorial - Catalyst Tutorial: Overview
The Catalyst framework is a flexible and comprehensive environment for quickly building high-functionality web applications.
This tutorial is designed to provide a rapid introduction to its basics and its most commonly used features while focusing on real-world best practices.
The tutorial is divided into the following sections:
A tarball of the final application is available at to_be_compled_in_final_version.
- VERSIONS AND CONVENTIONS USED IN THIS TUTORIAL
- CATALYST INSTALLATION
- DATABASES
- WHERE TO GET WORKING CODE
- CREATE A CATALYST PROJECT
- CREATE A SQLITE DATABASE
- EDIT THE LIST OF CATALYST PLUGINS
- DATABASE ACCESS WITH DBIx::Class
- Create a DBIC Schema File
- Create the DBIC ``Result Source'' Files
- Use Catalyst::Model::DBIC::Schema to Load the Model Class
- CREATE A CATALYST CONTROLLER
- CATALYST VIEWS
- Create a Catalyst View Using TTSite
- Using RenderView for the Default View
- Globally Customize Every View
- Create a TT Template Page
- RUN THE APPLICATION
- FORMLESS SUBMISSION
- Include a Create Action in the Books Controller
- Include a Template for the url_create Action:
- Try the url_create Feature
- MANUALLY BUILDING A CREATE FORM
- Add a Method to Display the Form
- Add a Template for the Form
- Add Method to Process Form Values and Update Database
- Test Out the Form
- A SIMPLE DELETE FEATURE
- Include a Delete Link in the List
- Add a Delete Action to the Controller
- Try the Delete Feature
- BASIC AUTHENTICATION
- Add Users and Roles to the Database
- Add User and Role Information to DBIC Schema
- Create New ``Result Source Objects''
- Sanity-Check Reload of Development Server
- Include Authentication and Session Plugins
- Configure Authentication
- Add Login and Logout Controllers
- Add a Login Form TT Template Page
- Add Valid User Check
- Displaying Content Only to Authenticated Users
- Try Out Authentication
- USING PASSWORD HASHES
- Get a SHA-1 Hash for the Password
- Switch to SHA-1 Password Hashes in the Database
- Enable SHA-1 Hash Passwords in Catalyst::Plugin::Authentication::Store::DBIC
- Try Out the Hashed Passwords
- BASIC AUTHORIZATION
- Update Plugins to Include Support for Authorization
- Add Config Information for Authorization
- Add Role-Specific Logic to the ``Book List'' Template
- Limit Books::add to admin Users
- Try Out Authentication And Authorization
- ENABLE ACL-BASED AUTHORIZATION
- Add the Catalyst::Plugin::Authorization::ACL Plugin
- Add ACL Rules to the Application Class
- Add a Method to Handle Access Violations
- LOG STATEMENTS
- RUNNING CATALYST UNDER THE PERL DEBUGGER
- DEBUGGING MODULES FROM CPAN
- RUNNING THE "CANNED" CATALYST TESTS
- RUNNING A SINGLE TEST
- ADDING YOUR OWN TEST SCRIPT
- SUPPORTING BOTH PRODUCTION AND TEST DATABASES
- HTML::WIDGET FORM CREATION
- Add the HTML::Widget Plugin
- Add a Form Creation Helper Method
- Add Actions to Display and Save the Form
- Update the CSS
- Create a Template Page To Display The Form
- Add Links for Create and Update via HTML::Widget
- Test The <HTML::Widget> Create Form
- HTML::WIDGET VALIDATION AND FILTERING
- Add Constraints and Filters to the Widget Creation Method
- Rebuild the Form Submission Method to Include Validation
- Try Out the Form
- Enable DBIx::Class::HTMLWidget Support
- Add DBIx::Class::HTMLWidget to DBIC Model
- Use populate_from_widget in hw_create_do
- APPENDIX 1: CUT AND PASTE FOR POD-BASED EXAMPLES
- "Un-indenting" with Vi/Vim
- "Un-indenting" with Emacs
- APPENDIX 2: USING MYSQL AND POSTGRESQL
- APPENDIX 3: IMPROVED HASHING SCRIPT
This tutorial would not have been possible without the input of many different people in the Catalyst community.
In particular,
the primary author would like to thank:
- Sebastian Riedel for founding the Catalyst project.
- The members of the Catalyst Core Team for their tireless efforts to advance the Catalyst project.
Although all of the Core Team members have played a key role in this tutorial,
it would have never been possible without the critical contributions of: Matt Trout,
for his unfathomable knowledge of all things Perl and Catalyst (and his willingness to answer lots of my questions); Jesse Sheidlower,
for his incredible skill with the written word and dedication to improving the Catalyst documentation; and Yuval Kogman,
for his work on the Catalyst "Auth & Authz" plugins (the original focus of the tutorial) and other key Catalyst modules.
- Other Catalyst documentation folks like Kieren Diment,
Gavin Henry,
and Jess Robinson (including their work on the original Catalyst tutorial).
- Everyone on #catalyst and #catalyst-dev.
- People who have emailed me with corrections and suggestions on the tutorial.
As of the most recent release,
this include: Florian Ragwitz,
Mauro Andreolini,
Jim Howard,
Giovanni Gigante,
William Moreno,
and Bryan Roach.
Kennedy Clark,
hkclark@gmail.com
Please report any errors,
issues or suggestions to the author.
The most recent version of the Catalyst Tutorial can be found at http://dev.catalyst.perl.org/repos/Catalyst/trunk/Catalyst-Runtime/lib/Catalyst/Manual/Tutorial/.
Copyright 2006,
Kennedy Clark,
under Creative Commons License (http://creativecommons.org/licenses/by-nc-sa/2.5/).