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=ff372ea751f998aef40b18e532b9f637e592ffbf;hp=1298e2b55be9449861c4a301d41ae94c84a30c2c;hb=f4e9de4a3171fd75d04fa8e294fd9a0ae367bc18;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..ff372ea 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,30 +74,30 @@ 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'; -to your C. +to your F. =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 -Create the directory C. Create C: +Create the directory F. Create F: package MyApp::Form::Book; @@ -116,7 +117,7 @@ Create the directory C. Create C: =head2 Add Action to Display and Save the Form -At the top of the C add: +At the top of the F add: use MyApp::Form::Book; @@ -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' @@ -160,19 +161,19 @@ method later when we implement 'edit'. =head2 Create a Template Page To Display The Form -Open C in your editor and enter the following: +Open F in your editor and enter the following: [% META title = 'Create/Update Book' %] - + [%# Render the HTML::FormHandler Form %] [% form.render %] - +

Return to book list

=head2 Add Link for Create -Open C in your editor and add the following to +Open F in your editor and add the following to the bottom of the existing file: ... @@ -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 F 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: +Edit F and add the following method: + - =head2 edit Edit an existing book with FormHandler @@ -259,7 +260,7 @@ Edit C and add the following method: return $self->form($c, $c->stash->{object}); } -Update the C, adding an 'edit' link below the +Update the F, adding an 'edit' link below the "Delete" link to use the FormHandler edit method: @@ -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