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_FormFu.pod;h=195e6f4410e9638de99dfcb22c8849db42e1f775;hp=e3b5a0dc3eda053f37a7b3ff7dff08a8fefff5e3;hb=05ae1bbcc4d5fbf5acf26479fd85f78bbd016fa7;hpb=16d0d3969b36142004136ddb3e50b8cf499ab7e2 diff --git a/lib/Catalyst/Manual/Tutorial/09_AdvancedCRUD/09_FormFu.pod b/lib/Catalyst/Manual/Tutorial/09_AdvancedCRUD/09_FormFu.pod index e3b5a0d..195e6f4 100644 --- a/lib/Catalyst/Manual/Tutorial/09_AdvancedCRUD/09_FormFu.pod +++ b/lib/Catalyst/Manual/Tutorial/09_AdvancedCRUD/09_FormFu.pod @@ -58,17 +58,22 @@ L 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::FormFu version 0.05001. +and restore data to/from the database. See L for additional form management options other than L. +Source code for the tutorial in included in the F +directory of the Tutorial Virtual machine (one subdirectory per +chapter). There are also instructions for downloading the code in +L. + =head1 HTML::FormFu FORM CREATION This section looks at how L can be used to add additional -functionality to the manually created form from Chapter 4. +functionality to the manually created form from +L. =head2 Inherit From Catalyst::Controller::HTML::FormFu @@ -85,10 +90,13 @@ to use the FormFu base controller class: Don't forget to add: + requires 'HTML::FormFu'; requires 'Catalyst::Controller::HTML::FormFu'; + requires 'HTML::FormFu::Model::DBIC'; to your C. + =head2 Add Action to Display and Save the Form Open C in your editor and add the @@ -114,10 +122,9 @@ following method: my $book = $c->model('DB::Book')->new_result({}); # Save the form data for the book $form->model->update($book); - # Set a status message for the user - $c->flash->{status_msg} = 'Book created'; - # Return to the books list - $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")})); $c->detach; } else { # Get the authors from the DB @@ -144,7 +151,7 @@ Although C supports any configuration file handled by L, most people tend to use YAML. First create a directory to hold your form configuration files: - mkdir -p root/forms/books + $ mkdir -p root/forms/books Then create the file C and enter the following text: @@ -252,7 +259,7 @@ form. Fill in the following values: Rating: 4 Author: Comer -Click the Submit button, and you will be returned to the Book List page +Click the "Submit" button, and you will be returned to the Book List page with a "Book created" status message displayed. Also note that this implementation allows you to create books with any @@ -360,15 +367,15 @@ to match: # Global filters and constraints. constraints: - # The user cannot leave any fields blank - - Required - # If not all fields are required, move the Required constraint to the - # fields that are + # The user cannot leave any fields blank + - Required + # If not all fields are required, move the Required constraint to the + # fields that are filter: - # Remove whitespace at both ends - - TrimEdges - # Escape HTML characters for safety - - HTMLEscape + # Remove whitespace at both ends + - TrimEdges + # Escape HTML characters for safety + - HTMLEscape B Copying and pasting YAML from Perl documentation is sometimes tricky. See the L section of @@ -407,6 +414,10 @@ validate the logic and insert feedback as appropriate. Try adding blank spaces at the front or the back of the title and note that it will be removed. +Note that you can update your FormFu YAML forms and the development +server does not need to reload -- the form definition is read from +the YAML file each time a controller action uses it. + =head1 CREATE AND UPDATE/EDIT ACTION @@ -429,8 +440,9 @@ bottom: # Make sure we were able to get a book unless ($book) { - $c->flash->{error_msg} = "Invalid book -- Cannot edit"; - $c->response->redirect($c->uri_for($self->action_for('list'))); + # Set an error message for the user & return to books list + $c->response->redirect($c->uri_for($self->action_for('list'), + {mid => $c->set_error_msg("Invalid book -- Cannot edit")})); $c->detach; } @@ -444,9 +456,9 @@ bottom: # Save the form data for the book $form->model->update($book); # Set a status message for the user - $c->flash->{status_msg} = 'Book edited'; - # Return to the books list - $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 edited")})); $c->detach; } else { # Get the authors from the DB @@ -518,13 +530,15 @@ following: ... [% # Add a link to delete a book %] - Delete + Delete [% # Add a link to edit a book %] - Edit + Edit ... -B Only add two lines (the "Add a link to edit a book" comment and +B Only add three lines (the "Add a link to edit a book" comment and the href for C). Make sure you add it below the existing C link. @@ -631,11 +645,8 @@ Kennedy Clark, C Feel free to contact the author for any errors or suggestions, but the best way to report issues is via the CPAN RT Bug system at -. - -The most recent version of the Catalyst Tutorial can be found at -L. +L. -Copyright 2006-2010, Kennedy Clark, under the +Copyright 2006-2011, Kennedy Clark, under the Creative Commons Attribution Share-Alike License Version 3.0 (L).