1Catalyst::Manual::TutorUisaelr(3C)ontributed Perl DocumeCnattaatliyosnt::Manual::Tutorial(3)
2
3
4

NAME

6       Catalyst::Manual::Tutorial - Catalyst Tutorial: Overview
7

DESCRIPTION

9       The Catalyst framework is a flexible and comprehensive environment for
10       quickly building high-functionality web applications.  This tutorial is
11       designed to provide a rapid introduction to its basics and its most
12       commonly used features while focusing on real-world best practices.
13
14       We suggest that you read this introduction on the web.  Make sure you
15       are reading the latest version of the tutorial by visiting
16       Catalyst::Manual::Tutorial.  Alternatively you can use CPAN modules
17       like Pod::Webserver, Pod::POM::Web, Pod::Browser (Catalyst based), or
18       CPAN::Mini::Webserver to read a local copy of the tutorial.
19
20       The tutorial is divided into the following sections:
21
22       NOTE: CLICK THESE LINKS TO JUMP TO CHAPTERS (the index links above only
23       navigate inside this page).
24
25       1.  Introduction
26
27       2.  Catalyst Basics
28
29       3.  More Catalyst Basics
30
31       4.  Basic CRUD
32
33       5.  Authentication
34
35       6.  Authorization
36
37       7.  Debugging
38
39       8.  Testing
40
41       9.  Advanced CRUD
42
43       10. Appendices
44
45       Final code tarballs for each chapter of the tutorial are available at
46       <http://dev.catalystframework.org/repos/Catalyst/trunk/examples/Tutorial/>.
47

Detailed Table of Contents

49   Chapter 1: Intro
50       Note: Click on the heading in the previous line to jump to the actual
51       chapter. Below is a "table of contents" for this chapter.
52
53       •   VERSIONS AND CONVENTIONS USED IN THIS TUTORIAL
54
55       •   CATALYST INSTALLATION
56
57       •   DATABASES
58
59       •   WHERE TO GET WORKING CODE
60
61   Chapter 2: Catalyst Basics
62       Note: Click on the heading in the previous line to jump to the actual
63       chapter. Below is a "table of contents" for this chapter.
64
65       •   CREATE A CATALYST PROJECT
66
67       •   HELLO WORLD
68
69           •   The Simplest Way
70
71           •   Hello, World! Using a View and a Template
72
73       •   CREATE A SIMPLE CONTROLLER AND AN ACTION
74
75   Chapter 3: More Catalyst Basics
76       Note: Click on the heading in the previous line to jump to the actual
77       chapter. Below is a "table of contents" for this chapter.
78
79       •   CREATE A NEW APPLICATION
80
81       •   EDIT THE LIST OF CATALYST PLUGINS
82
83       •   CREATE A CATALYST CONTROLLER
84
85       •   CATALYST VIEWS
86
87           •   Create a Catalyst View
88
89           •   Create a TT Template Page
90
91           •   Test Run The Application
92
93       •   CREATE A SQLITE DATABASE
94
95       •   DATABASE ACCESS WITH DBIx::Class
96
97           •   Create a Dynamic DBIC Model
98
99       •   ENABLE THE MODEL IN THE CONTROLLER
100
101           •   Test Run The Application
102
103       •   CREATE A WRAPPER FOR THE VIEW
104
105           •   Configure TT.pm For The Wrapper
106
107           •   Create the Wrapper Template File and Stylesheet
108
109           •   Test Run The Application
110
111       •   A STATIC DATABASE MODEL WITH DBIx::Class
112
113           •   Create Static DBIC Schema Files
114
115           •   Updating the Generated DBIC Schema Files
116
117           •   Run The Application
118
119       •   UPDATING THE VIEW
120
121       •   RUNNING THE APPLICATION FROM THE COMMAND LINE
122
123       •   OPTIONAL INFORMATION
124
125           •   Using RenderView for the Default View
126
127           •   Using The Default Template Name
128
129           •   Return To A Manually-Specified Template
130
131   Chapter 4: Basic CRUD
132       Note: Click on the heading in the previous line to jump to the actual
133       chapter. Below is a "table of contents" for this chapter.
134
135       •   FORMLESS SUBMISSION
136
137           •   Include a Create Action in the Books Controller
138
139           •   Include a Template for the url_create Action:
140
141           •   Try the url_create Feature
142
143       •   CONVERT TO A CHAINED ACTION
144
145           •   Try the Chained Action
146
147           •   Refactor to Use a "Base" Method to Start the Chains
148
149       •   MANUALLY BUILDING A CREATE FORM
150
151           •   Add a Method to Display the Form
152
153           •   Add a Template for the Form
154
155           •   Add Method to Process Form Values and Update Database
156
157           •   Test Out the Form
158
159       •   A SIMPLE DELETE FEATURE
160
161           •   Include a Delete Link in the List
162
163           •   Add a Common Method to Retrieve a Book for the Chain
164
165           •   Add a Delete Action to the Controller
166
167           •   Try the Delete Feature
168
169           •   Fixing a Dangerous URL
170
171           •   Try the Delete and Redirect Logic
172
173           •   Using uri_for to Pass Query Parameters
174
175           •   Try the Delete and Redirect With Query Param Logic
176
177       •   EXPLORING THE POWER OF DBIC
178
179           •   Add Datetime Columns to Our Existing Books Table
180
181           •   Update DBIC to Automatically Handle the Datetime Columns
182
183           •   Create a ResultSet Class
184
185           •   Chaining ResultSets
186
187           •   Adding Methods to Result Classes
188
189   Chapter 5: Authentication
190       Note: Click on the heading in the previous line to jump to the actual
191       chapter. Below is a "table of contents" for this chapter.
192
193       •   BASIC AUTHENTICATION
194
195           •   Add Users and Roles to the Database
196
197           •   Add User and Role Information to DBIC Schema
198
199           •   Sanity-Check Reload of Development Server
200
201           •   Include Authentication and Session Plugins
202
203           •   Configure Authentication
204
205           •   Add Login and Logout Controllers
206
207           •   Add a Login Form TT Template Page
208
209           •   Add Valid User Check
210
211           •   Displaying Content Only to Authenticated Users
212
213           •   Try Out Authentication
214
215       •   USING PASSWORD HASHES
216
217           •   Get a SHA-1 Hash for the Password
218
219           •   Switch to SHA-1 Password Hashes in the Database
220
221           •   Enable SHA-1 Hash Passwords in
222               Catalyst::Plugin::Authentication::Store::DBIC
223
224           •   Try Out the Hashed Passwords
225
226       •   USING THE SESSION FOR FLASH
227
228           •   Try Out Flash
229
230           •   Switch To Flash-To-Stash
231
232   Chapter 6: Authorization
233       Note: Click on the heading in the previous line to jump to the actual
234       chapter. Below is a "table of contents" for this chapter.
235
236       •   BASIC AUTHORIZATION
237
238           •   Update Plugins to Include Support for Authorization
239
240           •   Add Config Information for Authorization
241
242           •   Add Role-Specific Logic to the ``Book List'' Template
243
244           •   Limit Books::add to admin Users
245
246           •   Try Out Authentication And Authorization
247
248       •   ENABLE MODEL-BASED AUTHORIZATION
249
250   Chapter 7: Debugging
251       Note: Click on the heading in the previous line to jump to the actual
252       chapter. Below is a "table of contents" for this chapter.
253
254       •   LOG STATEMENTS
255
256       •   RUNNING CATALYST UNDER THE PERL DEBUGGER
257
258       •   DEBUGGING MODULES FROM CPAN
259
260       •   TT DEBUGGING
261
262   Chapter 8: Testing
263       Note: Click on the heading in the previous line to jump to the actual
264       chapter. Below is a "table of contents" for this chapter.
265
266       •   RUNNING THE "CANNED" CATALYST TESTS
267
268       •   RUNNING A SINGLE TEST
269
270       •   ADDING YOUR OWN TEST SCRIPT
271
272       •   SUPPORTING BOTH PRODUCTION AND TEST DATABASES
273
274   Chapter 9: Advanced CRUD
275       Note: Click on the heading in the previous line to jump to the actual
276       chapter. Below is a "table of contents" for this chapter.
277
278       •   ADVANCED CRUD OPTIONS
279
280   Chapter 10: Appendices
281       Note: Click on the heading in the previous line to jump to the actual
282       chapter. Below is a "table of contents" for this chapter.
283
284       •   APPENDIX 1: CUT AND PASTE FOR POD-BASED EXAMPLES
285
286           •   "Un-indenting" with Vi/Vim
287
288           •   "Un-indenting" with Emacs
289
290       •   APPENDIX 2: USING MYSQL AND POSTGRESQL
291
292           •   MySQL
293
294           •   PostgreSQL
295
296       •   APPENDIX 3: IMPROVED HASHING SCRIPT
297

THANKS

299       This tutorial would not have been possible without the input of many
300       different people in the Catalyst community.  In particular, the primary
301       author would like to thank:
302
303       •   Sebastian Riedel for founding the Catalyst project.
304
305       •   The members of the Catalyst Core Team for their tireless efforts to
306           advance the Catalyst project.  Although all of the Core Team
307           members have played a key role in this tutorial, it would have
308           never been possible without the critical contributions of: Matt
309           Trout, for his unfathomable knowledge of all things Perl and
310           Catalyst (and his willingness to answer lots of my questions);
311           Jesse Sheidlower, for his incredible skill with the written word
312           and dedication to improving the Catalyst documentation; and Yuval
313           Kogman, for his work on the Catalyst "Auth & Authz" plugins (the
314           original focus of the tutorial) and other key Catalyst modules.
315
316       •   Other Catalyst documentation folks like Kieren Diment, Gavin Henry,
317           and Jess Robinson (including their work on the original Catalyst
318           tutorial).
319
320       •   Kieren Diment for his oversight of Catalyst-related documentation.
321
322       •   Everyone on #catalyst and #catalyst-dev.
323
324       •   Louis Moore (who thanks Marcello Romani and Tom Lanyon) for the
325           PostgreSQL content in the Appendix.
326
327       •   People who have emailed me with corrections and suggestions on the
328           tutorial. As of the most recent release, this include: Florian
329           Ragwitz, Mauro Andreolini, Jim Howard, Giovanni Gigante, William
330           Moreno, Bryan Roach, Ashley Berlin, David Kamholz, Kevin Old,
331           Henning Sprang, Jeremy Jones, David Kurtz, Ingo Wichmann, Shlomi
332           Fish, Murray Walker, Adam Witney and xenoterracide (Caleb Cushing).
333           Thanks to Devin Austin for coming up with an initial version of a
334           non-TTSite wrapper page. Also, a huge thank you to Kiffin Gish for
335           all the hard work on the "database depluralization" effort and
336           Rafael Kitover for the work on updating the tutorial to include
337           foreign key support for SQLite. I'm sure I am missing some names
338           here... apologies for that (please let me know if you name should
339           be here).
340

AUTHOR

342       Kennedy Clark, "hkclark@gmail.com"
343
344       Feel free to contact the author for any errors or suggestions, but the
345       best way to report issues is via the CPAN RT Bug system at
346       <https://rt.cpan.org/Public/Dist/Display.html?Name=Catalyst-Manual>.
347
348       Copyright 2006-2010, Kennedy Clark, under the Creative Commons
349       Attribution Share-Alike License Version 3.0
350       (<https://creativecommons.org/licenses/by-sa/3.0/us/>).
351
352
353
354perl v5.36.0                      2023-01-20     Catalyst::Manual::Tutorial(3)
Impressum