X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Manual.git;a=blobdiff_plain;f=lib%2FCatalyst%2FManual%2FTutorial%2FAdvancedCRUD%2FFormFu.pod;h=367b85079afd0a2eeba37c8056a814df19d1e46b;hp=af75d429a042ec3062b96e50cff8e19b22b6a715;hb=166c90a081d8b306ea1c8965f611c6ca317caec0;hpb=0171092fe9723f2ccf838575434ae26cd841bcfd diff --git a/lib/Catalyst/Manual/Tutorial/AdvancedCRUD/FormFu.pod b/lib/Catalyst/Manual/Tutorial/AdvancedCRUD/FormFu.pod index af75d42..367b850 100644 --- a/lib/Catalyst/Manual/Tutorial/AdvancedCRUD/FormFu.pod +++ b/lib/Catalyst/Manual/Tutorial/AdvancedCRUD/FormFu.pod @@ -124,8 +124,8 @@ following method: # Get the form that the :FormConfig attribute saved in the stash my $form = $c->stash->{form}; - # Check if the form as been submitted (vs. displaying the initial - # form) and if the data based validation. "submitted_and_valid" + # 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" if ($form->submitted_and_valid) { # Create a new book @@ -203,8 +203,8 @@ following text: value: Submit B Copying and pasting YAML from perl documentation is sometimes -tricky. See the L section of -this document for a foolproof procedure. +tricky. See the L section of +this document for a more foolproof config format. =head2 Update the CSS @@ -239,7 +239,7 @@ Open C in your editor and enter the following: [%# Render the HTML::FormFu Form %] [% form %] -

Return to book list

+

Return to book list

=head2 Add Links for Create and Update via C @@ -249,7 +249,7 @@ the bottom of the existing file:

HTML::FormFu: - Create + Create

This adds a new link to the bottom of the book list page that we can @@ -388,8 +388,8 @@ to match: - Required B Copying and pasting YAML from perl documentation is sometimes -tricky. See the L section of -this document for a foolproof procedure. +tricky. See the L section of +this document for a more foolproof config format. The main changes are: @@ -460,8 +460,8 @@ bottom: # Get the form that the :FormConfig attribute saved in the stash my $form = $c->stash->{form}; - # Check if the form as been submitted (vs. displaying the initial - # form) and if the data based validation. "submitted_and_valid" + # 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" if ($form->submitted_and_valid) { # Save the form data for the book @@ -532,9 +532,9 @@ following: [% # Add a link to delete a book %] - Delete + Delete [% # Add a link to edit a book %] - Edit + Edit @@ -554,139 +554,62 @@ be returned to the book list with a "Book edited" message at the top in green. Experiment with other edits to various books. -=head2 Copy-Paste versions of the YAML Config. - -YAML, the config format used in formfu depends on whitespace and can -behave strangely in perl documentation because POD is also whitespace -dependent. If you copy and paste the YAML below into the file -C and then run the following perl -oneliner, you're pretty much guaranteed to get valid YAML: - - $ perl -p -i -e 's/\s+\|//g' root/forms/books/formfu_create.yml - -=head2 YAML for the first half of the tutorial: - - |--- - |# indicator is the field that is used to test for form submission - |indicator: submit - |# Start listing the form elements - |elements: - | # The first element will be a text field for the title - | - type: Text - | name: title - | label: Title - | # This is an optional 'mouse over' title pop-up - | attributes: - | title: Enter a book title here - | - | # Another text field for the numeric rating - | - type: Text - | name: rating - | label: Rating - | attributes: - | title: Enter a rating between 1 and 5 here - | - | # Add a drop-down list for the author selection. Note that we will - | # dynamically fill in all the authors from the controller but we - | # could manually set items in the drop-list by adding this YAML code: - | # options: - | # - [ '1', 'Bastien' ] - | # - [ '2', 'Nasseh' ] - | - type: Select - | name: authors - | label: Author - | - | # The submit button - | - type: Submit - | name: submit - | value: Submit - - -=head2 YAML for the second part of the tutorial - - |--- - |# indicator is the field that is used to test for form submission - |indicator: submit - |# Start listing the form elements - |elements: - | # The first element will be a text field for the title - | - type: Text - | name: title - | label: Title - | # This is an optional 'mouse over' title pop-up - | attributes: - | title: Enter a book title here - | # Use Filter to clean up the input data - | filter: - | # Remove whitespace at both ends - | - TrimEdges - | # Escape HTML characters for safety - | - HTMLEscape - | # Add constraints for the field - | constraints: - | # The user cannot leave this field blank - | - SingleValue - | # Force the length to be between 5 and 40 chars - | - type: Length - | min: 5 - | max: 40 - | # Override the default of 'Invalid input' - | message: Length must be between 5 and 40 characters - | - | # Another text field for the numeric rating - | - type: Text - | name: rating - | label: Rating - | attributes: - | title: Enter a rating between 1 and 5 here - | # Use Filter to clean up the input data - | filter: - | # Remove whitespace at both ends - | - TrimEdges - | # Remove everything except digits - | - NonNumeric - | # Add constraints to the field - | constraints: - | - SingleValue - | # Make sure it's a number - | - Integer - | - | # Add a select list for the author selection. Note that we will - | # dynamically fill in all the authors from the controller but we - | # could manually set items in the select by adding this YAML code: - | # options: - | # - [ '1', 'Bastien' ] - | # - [ '2', 'Nasseh' ] - | - type: Select - | name: authors - | label: Author - | # Convert the drop-down to a multi-select list - | multiple: 1 - | # Display 3 entries (user can scroll to see others) - | size: 3 - | # One could argue we don't need to do filters or constraints for - | # a select list, but it's smart to do validation and sanity - | # checks on this data in case a user "hacks" the input - | # Use Filter to clean up the input data - | filter: - | # Remove whitespace at both ends - | - TrimEdges - | # Escape HTML characters for safety - | - HTMLEscape - | # Add constraints to the field - | constraints: - | # Make sure it's a number - | - Integer - | - | # The submit button - | - type: Submit - | name: submit - | value: Submit - | - |# Globally ensure that each field only specified one value - |constraints: - | # The user cannot leave any fields blank - | - Required +=head2 Config::General Config for this tutorial + +If you are having difficulty with YAML config above, please save the +below into the file C and delete the +C file. The below is in +L format which follows the syntax of +Apache config files. + + constraints Required + + constraints SingleValue + + min 5 + max 40 + type Length + message Length must be between 5 and 40 characters + + filter TrimEdges + filter HTMLEscape + name title + type Text + label Title + + title Enter a book title here + + + + constraints SingleValue + constraints Integer + filter TrimEdges + filter NonNumeric + name rating + type Text + label Rating + + title Enter a rating between 1 and 5 here + + + + constraints Integer + filter TrimEdges + filter HTMLEscape + name authors + type Select + label Author + multiple 1 + size 3 + + + value Submit + name submit + type Submit + + indicator submit + + =head1 AUTHOR