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=e15245c414bdd6570edaac47ecc8a09a17ce58d4;hp=af1447b7ed097f3d561c2fc56c7afb31deb22cfc;hb=02bb2b5a140dc22d7d002fcdce868656d704676a;hpb=2217b252905d370f4f7840cf78996d43c79e5d4f diff --git a/lib/Catalyst/Manual/Tutorial/09_AdvancedCRUD/09_FormHandler.pod b/lib/Catalyst/Manual/Tutorial/09_AdvancedCRUD/09_FormHandler.pod index af1447b..e15245c 100644 --- a/lib/Catalyst/Manual/Tutorial/09_AdvancedCRUD/09_FormHandler.pod +++ b/lib/Catalyst/Manual/Tutorial/09_AdvancedCRUD/09_FormHandler.pod @@ -2,7 +2,6 @@ Catalyst::Manual::Tutorial::09_AdvancedCRUD::09_FormHandler - Catalyst Tutorial - Chapter 9: Advanced CRUD - FormHandler - =head1 OVERVIEW This is B for the Catalyst tutorial. @@ -62,9 +61,9 @@ 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 +See L -for additional form management options other than +for additional form management options other than L. @@ -74,30 +73,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 prerequisite. +It will install L as a prerequisite. 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 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; @@ -117,7 +116,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; @@ -150,9 +149,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' @@ -161,25 +160,25 @@ 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: ...

- HTML::FormHandler: - Create + HTML::FormHandler: + Create

This adds a new link to the bottom of the book list page that we can @@ -200,18 +199,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: @@ -234,20 +233,20 @@ 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 @@ -260,30 +259,30 @@ 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: - [% # Add a link to delete a book %] - Delete - [% # Add a link to edit a book %] - Edit + [% # Add a link to delete a book %] + Delete + [% # Add a link to edit a book %] + Edit =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 @@ -296,7 +295,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