X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Manual.git;a=blobdiff_plain;f=lib%2FCatalyst%2FManual%2FTutorial%2F09_AdvancedCRUD%2F09_FormHandler.pod;h=60c554fc3829e9c334b8f19146f65ce198a1120d;hp=1298e2b55be9449861c4a301d41ae94c84a30c2c;hb=7ce05098c9b1df9078e709e5a724e821a3b3b00d;hpb=9372a4db010f4d7d0478e8152474cae5943b2993 diff --git a/lib/Catalyst/Manual/Tutorial/09_AdvancedCRUD/09_FormHandler.pod b/lib/Catalyst/Manual/Tutorial/09_AdvancedCRUD/09_FormHandler.pod index 1298e2b..60c554f 100644 --- a/lib/Catalyst/Manual/Tutorial/09_AdvancedCRUD/09_FormHandler.pod +++ b/lib/Catalyst/Manual/Tutorial/09_AdvancedCRUD/09_FormHandler.pod @@ -56,15 +56,16 @@ L =head1 DESCRIPTION -This portion of the tutorial explores L and -how it can be used to manage forms, perform validation of form input, -as well as save and restore data to/from the database. This was written -using HTML::FormHandler version 0.28001. +This portion of the tutorial explores +L and how it can be used to manage +forms, perform validation of form input, and save and restore data +to or from the database. This was written using HTML::FormHandler version +0.28001. -See -L -for additional form management options other than -L. +See +L +for additional form management options other than +L. =head1 Install HTML::FormHandler @@ -73,11 +74,11 @@ L. Use the following command to install L directly from CPAN: - sudo cpan HTML::FormHandler::Model::DBIC + sudo cpan HTML::FormHandler::Model::DBIC -It will install L as a prereq. +It will install L as a prerequisite. -Also add: +Also, add: requires 'HTML::FormHandler::Model::DBIC'; @@ -85,13 +86,13 @@ to your C. =head1 HTML::FormHandler FORM CREATION -This section looks at how L can be used to +This section looks at how L can be used to add additional functionality to the manually created form from Chapter 4. -=head2 Using FormHandler in your controllers +=head2 Using FormHandler in your controllers -FormHandler doen't have a Catalyst base controller, because interfacing +FormHandler doesn't have a Catalyst base controller, because interfacing to a form is only a couple of lines of code. =head2 Create a Book Form @@ -149,9 +150,9 @@ Add the following methods: $c->stash( template => 'books/form.tt2', form => $form ); $form->process( item => $book, params => $c->req->params ); return unless $form->validated; - $c->flash( message => 'Book created' ); - # Redirect the user back to the list page - $c->response->redirect($c->uri_for($self->action_for('list'))); + # Set a status message for the user & return to books list + $c->response->redirect($c->uri_for($self->action_for('list'), + {mid => $c->set_status_msg("Book created")})); } These two methods could be combined at this point, but we'll use the 'form' @@ -163,10 +164,10 @@ method later when we implement 'edit'. Open C in your editor and enter the following: [% META title = 'Create/Update Book' %] - + [%# Render the HTML::FormHandler Form %] [% form.render %] - +

Return to book list

@@ -199,18 +200,18 @@ form. Fill in the following values: Title = "Internetworking with TCP/IP Vol. II" Rating = "4" Author = "Comer" - + Click the Submit button, and you will be returned to the Book List page with a "Book created" status message displayed. Note that because the 'Author' column is a Select list, only the authors in the database can be entered. The 'ratings' field will only accept -integers. +integers. =head2 Add Constraints -Open C in your editor. +Open C in your editor. Restrict the title size and make it required: @@ -221,32 +222,32 @@ Add range constraints to the 'rating' field: has_field 'rating' => ( type => 'Integer', range_start => 1, range_end => 5 ); The 'authors' relationship is a 'many-to-many' pseudo-relation, so this field -can be set to Multiple to allow the selection of multiple authors and make it +can be set to Multiple to allow the selection of multiple authors; also, make it required: has_field 'authors' => ( type => 'Multiple', label_column => 'last_name', required => 1 ); -Note: FormHandler automatically strips whitespace at the beginning or end of fields. -If you want some other kind of stripping (or none) you can specify it explicitly. -(see L) +Note: FormHandler automatically strips whitespace at the beginning and +end of fields. If you want some other kind of stripping (or none) you +can specify it explicitly; see L. =head2 Try Out the Updated Form -Press C to kill the previous server instance (if it's still +Press C to kill the previous server instance (if it's still running) and restart it: $ script/myapp_server.pl -Make sure you are still logged in as C and try adding a book -with various errors: title less than 5 characters, non-numeric rating, a -rating of 0 or 6, etc. Also try selecting one, two, and zero authors. +Make sure you are still logged in as C and try adding a book +with various errors: title less than 5 characters, non-numeric rating, a +rating of 0 or 6, etc. Also try selecting one, two, and zero authors. =head2 Create the 'edit' method Edit C and add the following method: - + =head2 edit Edit an existing book with FormHandler @@ -272,17 +273,17 @@ Update the C, adding an 'edit' link below the =head2 Try Out the Edit/Update Feature -Press C to kill the previous server instance (if it's still +Press C to kill the previous server instance (if it's still running) and restart it: $ script/myapp_server.pl -Make sure you are still logged in as C and go to the -L URL in your browser. Click the -"Edit" link next to "Internetworking with TCP/IP Vol. II", change the -rating to a 3, the "II" at end of the title to the number "2", add -Stevens as a co-author (control-click), and click Submit. You will then -be returned to the book list with a "Book edited" message at the top in +Make sure you are still logged in as C and go to the +L URL in your browser. Click the +"Edit" link next to "Internetworking with TCP/IP Vol. II", change the +rating to a 3, the "II" at end of the title to the number "2", add +Stevens as a co-author (control-click), and click Submit. You will then +be returned to the book list with a "Book edited" message at the top in green. Experiment with other edits to various books. =head2 See additional documentation on FormHandler @@ -295,7 +296,7 @@ L mailing list: http://groups.google.com/group/formhandler - code: http://github.com/gshank/html-formhandler/tree/master + code: http://github.com/gshank/html-formhandler/tree/master =head1 AUTHOR