[Catalyst-commits] r7882 - / trunk/Catalyst-Manual/lib/Catalyst/Manual/Tutorial/AdvancedCRUD

zarquon at dev.catalyst.perl.org zarquon at dev.catalyst.perl.org
Mon Jun 2 14:34:09 BST 2008


Author: zarquon
Date: 2008-06-02 14:34:09 +0100 (Mon, 02 Jun 2008)
New Revision: 7882

Modified:
   /
   trunk/Catalyst-Manual/lib/Catalyst/Manual/Tutorial/AdvancedCRUD/FormFu.pod
Log:
 r13370 at zaphod:  kd | 2008-06-02 23:28:53 +1000
 added foolproof yaml



Property changes on: 
___________________________________________________________________
Name: svk:merge
   - 1b129c88-ebf4-0310-add9-f09427935aba:/local/catalyst:4278
1c72fc7c-9ce4-42af-bf25-3bfe470ff1e8:/local/Catalyst:13369
3b9770f9-e80c-0410-a7de-cd203d167417:/local/catalyst:3514
dd8ad9ea-0304-0410-a433-df5f223e7bc0:/local/Catalyst:6909
   + 1b129c88-ebf4-0310-add9-f09427935aba:/local/catalyst:4278
1c72fc7c-9ce4-42af-bf25-3bfe470ff1e8:/local/Catalyst:13370
3b9770f9-e80c-0410-a7de-cd203d167417:/local/catalyst:3514
dd8ad9ea-0304-0410-a433-df5f223e7bc0:/local/Catalyst:6909

Modified: trunk/Catalyst-Manual/lib/Catalyst/Manual/Tutorial/AdvancedCRUD/FormFu.pod
===================================================================
--- trunk/Catalyst-Manual/lib/Catalyst/Manual/Tutorial/AdvancedCRUD/FormFu.pod	2008-06-02 13:33:46 UTC (rev 7881)
+++ trunk/Catalyst-Manual/lib/Catalyst/Manual/Tutorial/AdvancedCRUD/FormFu.pod	2008-06-02 13:34:09 UTC (rev 7882)
@@ -202,7 +202,11 @@
           name: submit
           value: Submit
 
+B<NOTE:> Copying and pasting YAML from perl documentation is sometimes
+tricky.  See the L<Copy-Paste versions of the YAML Config> section of
+this document for a foolproof procedure.
 
+
 =head2 Update the CSS
 
 Edit C<root/src/ttsite.css> and add the following lines to the bottom of
@@ -383,6 +387,10 @@
         # The user cannot leave any fields blank
         - Required
 
+B<NOTE:> Copying and pasting YAML from perl documentation is sometimes
+tricky.  See the L<Copy-Paste versions of the YAML Config> section of
+this document for a foolproof procedure.
+
 The main changes are:
 
 =over 4
@@ -546,6 +554,140 @@
 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<root/forms/books/formfu_create.yml> 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
+
 =head1 AUTHOR
 
 Kennedy Clark, C<hkclark at gmail.com>




More information about the Catalyst-commits mailing list