X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FManual%2FTutorial%2F09_AdvancedCRUD%2F09_FormFu.pod;h=9e2e6c2a69f1c6e1d9b61872e63a2a1f251a1435;hb=462f687dffd66c46f8ff4c908fa93051a866de00;hp=732165ae9f80ddbb142700a9d70d865b550cdcc0;hpb=aeaa7db5ec678d87f39c7e27f4c1fc7a95c6af56;p=catagits%2FCatalyst-Manual.git
diff --git a/lib/Catalyst/Manual/Tutorial/09_AdvancedCRUD/09_FormFu.pod b/lib/Catalyst/Manual/Tutorial/09_AdvancedCRUD/09_FormFu.pod
index 732165a..9e2e6c2 100644
--- a/lib/Catalyst/Manual/Tutorial/09_AdvancedCRUD/09_FormFu.pod
+++ b/lib/Catalyst/Manual/Tutorial/09_AdvancedCRUD/09_FormFu.pod
@@ -56,28 +56,26 @@ 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::FormFu version 0.05001.
+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.
-See
-L
-for additional form management options other than
-L.
+See L for additional form
+management options other than 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.
+This section looks at how L can be used to add additional
+functionality to the manually created form from
+L.
=head2 Inherit From Catalyst::Controller::HTML::FormFu
First, change your C to inherit from
-L
-by changing the C line from the default of:
+L by changing the C line
+from the default of:
BEGIN {extends 'Catalyst::Controller'; }
@@ -87,10 +85,13 @@ to use the FormFu base controller class:
Don't forget to add:
+ requires 'HTML::FormFu';
requires 'Catalyst::Controller::HTML::FormFu';
+ requires '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
@@ -107,7 +108,7 @@ following method:
# Get the form that the :FormConfig attribute saved in the stash
my $form = $c->stash->{form};
-
+
# Check if the form has been submitted (vs. displaying the initial
# form) and if the data passed validation. "submitted_and_valid"
# is shorthand for "$form->submitted && !$form->has_errors"
@@ -116,10 +117,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
@@ -134,21 +134,21 @@ following method:
# Add the authors to it
$select->options(\@authors);
}
-
+
# Set the template
- $c->stash->{template} = 'books/formfu_create.tt2';
+ $c->stash(template => 'books/formfu_create.tt2');
}
=head2 Create a Form Config File
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:
+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
+Then create the file C and enter the
following text:
---
@@ -186,15 +186,15 @@ following text:
name: submit
value: Submit
-B Copying and pasting YAML from perl documentation is sometimes
+B Copying and pasting YAML from Perl documentation is sometimes
tricky. See the L section of
this document for a more foolproof config format.
=head2 Update the CSS
-Edit C and add the following lines to the bottom of
-the file:
+Edit C and add the following lines to the
+bottom of the file:
...
input {
@@ -208,16 +208,13 @@ the file:
display: block;
}
-These changes will display form elements vertically. Note that the
-existing definition of the C<.error> class is pulling the color scheme
-settings from the C file that was created by the
-TTSite helper. This allows control over the CSS color settings from a
-single location.
+These changes will display form elements vertically.
=head2 Create a Template Page To Display The Form
-Open C in your editor and enter the following:
+Open C in your editor and enter the
+following:
[% META title = 'Create/Update Book' %]
@@ -239,8 +236,8 @@ the bottom of the existing file:
Create
-This adds a new link to the bottom of the book list page that we can
-use to easily launch our HTML::FormFu-based form.
+This adds a new link to the bottom of the book list page that we can use
+to easily launch our HTML::FormFu-based form.
=head2 Test The HTML::FormFu Create Form
@@ -257,16 +254,16 @@ 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
-bogus information. Although we have constrained the authors with the
-drop-down list (note that this isn't bulletproof because we still have
-not prevented a user from "hacking" the form to specify other values),
-there are no restrictions on items such as the length of the title (for
-example, you can create a one-letter title) and the value of the rating
-(you can use any number you want, and even non-numeric values with
+bogus information. Although we have constrained the authors with the
+drop-down list (note that this isn't bulletproof because we still have
+not prevented a user from "hacking" the form to specify other values),
+there are no restrictions on items such as the length of the title (for
+example, you can create a one-letter title) and the value of the rating
+(you can use any number you want, and even non-numeric values with
SQLite). The next section will address this concern.
B Depending on the database you are using and how you established
@@ -278,19 +275,18 @@ performing any validation.
=head1 HTML::FormFu VALIDATION AND FILTERING
-Although the use of L in the previous section
-did provide an automated mechanism to build the form, the real power of
-this module stems from functionality that can automatically validate and
-filter the user input. Validation uses constraints to be sure that
-users input appropriate data (for example, that the email field of a
-form contains a valid email address). Filtering can also be used to
-remove extraneous whitespace from fields or to escape meta-characters in
-user input.
+Although the use of L in the previous section did provide
+an automated mechanism to build the form, the real power of this module
+stems from functionality that can automatically validate and filter the
+user input. Validation uses constraints to be sure that users input
+appropriate data (for example, that the email field of a form contains a
+valid email address). Filtering can also be used to remove extraneous
+whitespace from fields or to escape meta-characters in user input.
=head2 Add Constraints
-Open C in your editor and update it
+Open C in your editor and update it
to match:
---
@@ -366,17 +362,17 @@ 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
+B Copying and pasting YAML from Perl documentation is sometimes
tricky. See the L section of
this document for a more foolproof config format.
@@ -387,39 +383,41 @@ The main changes are:
=item *
The C