modules should be linked with L<>
[catagits/Catalyst-Manual.git] / lib / Catalyst / Manual / Tutorial / 09_AdvancedCRUD / 09_FormFu.pod
index 9d32b5e..457f92e 100644 (file)
@@ -63,9 +63,9 @@ and restore data to/from the database.
 See L<Catalyst::Manual::Tutorial::09_AdvancedCRUD> for additional form
 management options other than L<HTML::FormFu>.
 
-Source code for the tutorial in included in the F</root/Final> directory
-of the Tutorial Virtual machine (one subdirectory per chapter).  There
-are also instructions for downloading the code in
+Source code for the tutorial in included in the F</home/catalyst/Final>
+directory of the Tutorial Virtual machine (one subdirectory per
+chapter).  There are also instructions for downloading the code in
 L<Catalyst::Manual::Tutorial::01_Intro>.
 
 
@@ -78,7 +78,7 @@ L<Chapter 4|Catalyst::Manual::Tutorial::04_BasicCRUD>.
 
 =head2 Inherit From Catalyst::Controller::HTML::FormFu
 
-First, change your C<lib/MyApp/Controller/Books.pm> to inherit from
+First, change your F<lib/MyApp/Controller/Books.pm> to inherit from
 L<Catalyst::Controller::HTML::FormFu> by changing the C<extends> line
 from the default of:
 
@@ -92,28 +92,28 @@ Don't forget to add:
 
     requires 'HTML::FormFu';
     requires 'Catalyst::Controller::HTML::FormFu';
-    requires 'requires 'HTML::FormFu::Model::DBIC';';
+    requires 'HTML::FormFu::Model::DBIC';
 
 to your C<Makefile.PL>.
 
 
 =head2 Add Action to Display and Save the Form
 
-Open C<lib/MyApp/Controller/Books.pm> in your editor and add the
+Open F<lib/MyApp/Controller/Books.pm> in your editor and add the
 following method:
 
     =head2 formfu_create
-    
+
     Use HTML::FormFu to create a new book
-    
+
     =cut
-    
+
     sub formfu_create :Chained('base') :PathPart('formfu_create') :Args(0) :FormConfig {
         my ($self, $c) = @_;
-    
+
         # 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"
@@ -139,7 +139,7 @@ following method:
             # Add the authors to it
             $select->options(\@authors);
         }
-    
+
         # Set the template
         $c->stash(template => 'books/formfu_create.tt2');
     }
@@ -147,13 +147,13 @@ following method:
 
 =head2 Create a Form Config File
 
-Although C<HTML::FormFu> supports any configuration file handled by
+Although L<HTML::FormFu> supports any configuration file handled by
 L<Config::Any>, most people tend to use YAML.  First create a directory
 to hold your form configuration files:
 
     $ mkdir -p root/forms/books
 
-Then create the file C<root/forms/books/formfu_create.yml> and enter the
+Then create the file F<root/forms/books/formfu_create.yml> and enter the
 following text:
 
     ---
@@ -168,14 +168,14 @@ following text:
           # 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:
@@ -185,20 +185,20 @@ following text:
         - type: Select
           name: authors
           label: Author
-    
+
         # The submit button
         - type: Submit
           name: submit
           value: Submit
 
 B<NOTE:> Copying and pasting YAML from Perl documentation is sometimes
-tricky.  See the L<Config::General Config for this tutorial> section of
+tricky.  See the L</Config::General Config for this tutorial> section of
 this document for a more foolproof config format.
 
 
 =head2 Update the CSS
 
-Edit C<root/static/css/main.css> and add the following lines to the
+Edit F<root/static/css/main.css> and add the following lines to the
 bottom of the file:
 
     ...
@@ -218,21 +218,21 @@ These changes will display form elements vertically.
 
 =head2 Create a Template Page To Display The Form
 
-Open C<root/src/books/formfu_create.tt2> in your editor and enter the
+Open F<root/src/books/formfu_create.tt2> in your editor and enter the
 following:
 
     [% META title = 'Create/Update Book' %]
-    
+
     [%# Render the HTML::FormFu Form %]
     [% form %]
-    
-    <p><a href="[% c.uri_for(c.controller.action_for('list')) 
+
+    <p><a href="[% c.uri_for(c.controller.action_for('list'))
         %]">Return to book list</a></p>
 
 
 =head2 Add Links for Create and Update via C<HTML::FormFu>
 
-Open C<root/src/books/list.tt2> in your editor and add the following to
+Open F<root/src/books/list.tt2> in your editor and add the following to
 the bottom of the existing file:
 
     ...
@@ -291,7 +291,7 @@ whitespace from fields or to escape meta-characters in user input.
 
 =head2 Add Constraints
 
-Open C<root/forms/books/formfu_create.yml> in your editor and update it
+Open F<root/forms/books/formfu_create.yml> in your editor and update it
 to match:
 
     ---
@@ -314,7 +314,7 @@ to match:
               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
@@ -338,7 +338,7 @@ to match:
               min: 1
               max: 5
               message: "Must be between 1 and 5."
-    
+
         # 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:
@@ -359,12 +359,12 @@ to match:
           constraints:
             # Make sure it's a number
             - Integer
-    
+
         # The submit button
         - type: Submit
           name: submit
           value: Submit
-    
+
     # Global filters and constraints.
     constraints:
         # The user cannot leave any fields blank
@@ -389,7 +389,7 @@ The main changes are:
 
 The C<Select> element for C<authors> is changed from a single-select
 drop-down to a multi-select list by adding configuration for the
-C<multiple> and C<size> options in C<formfu_create.yml>.
+C<multiple> and C<size> options in F<formfu_create.yml>.
 
 =item *
 
@@ -422,22 +422,22 @@ the YAML file each time a controller action uses it.
 =head1 CREATE AND UPDATE/EDIT ACTION
 
 Let's expand the work done above to add an edit action.  First, open
-C<lib/MyApp/Controller/Books.pm> and add the following method to the
+F<lib/MyApp/Controller/Books.pm> and add the following method to the
 bottom:
 
     =head2 formfu_edit
-    
+
     Use HTML::FormFu to update an existing book
-    
+
     =cut
-    
-    sub formfu_edit :Chained('object') :PathPart('formfu_edit') :Args(0) 
+
+    sub formfu_edit :Chained('object') :PathPart('formfu_edit') :Args(0)
             :FormConfig('books/formfu_create.yml') {
         my ($self, $c) = @_;
-    
+
         # Get the specified book already saved by the 'object' method
         my $book = $c->stash->{object};
-    
+
         # Make sure we were able to get a book
         unless ($book) {
             # Set an error message for the user & return to books list
@@ -445,10 +445,10 @@ bottom:
                 {mid => $c->set_error_msg("Invalid book -- Cannot edit")}));
             $c->detach;
         }
-    
+
         # 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"
@@ -475,7 +475,7 @@ bottom:
             # Populate the form with existing values from DB
             $form->model->default_values($book);
         }
-    
+
         # Set the template
         $c->stash(template => 'books/formfu_create.tt2');
     }
@@ -491,7 +491,7 @@ the common code in separate methods).  The main differences are:
 We have to manually specify the name of the FormFu .yml file as an
 argument to C<:FormConfig> because the name can no longer be
 automatically deduced from the name of our action/method (by default,
-FormFu would look for a file named C<books/formfu_edit.yml>).
+FormFu would look for a file named F<books/formfu_edit.yml>).
 
 =item *
 
@@ -510,21 +510,21 @@ error message and return to the book list.
 =item *
 
 If the form has been submitted and passes validation, we skip creating a
-new book and just use C<$form-E<gt>model-E<gt>update> to update the
+new book and just use C<< $form->model->update >> to update the
 existing book.
 
 =item *
 
 If the form is being displayed for the first time (or has failed
 validation and it being redisplayed), we use
-C<$form-E<gt>model-E<gt>default_values> to populate the form with data
+C<< $form->model->default_values >> to populate the form with data
 from the database.
 
 =back
 
-Then, edit C<root/src/books/list.tt2> and add a new link below the
+Then, edit F<root/src/books/list.tt2> and add a new link below the
 existing "Delete" link that allows us to edit/update each existing book.
-The last E<lt>tdE<gt> cell in the book list table should look like the
+The last <td> cell in the book list table should look like the
 following:
 
     ...
@@ -589,8 +589,8 @@ real reason you worked through this Tutorial in the first place.
 =head2 Config::General Config for this tutorial
 
 If you are having difficulty with YAML config above, please save the
-below into the file C<formfu_create.conf> and delete the
-C<formfu_create.yml> file.  The below is in L<Config::General> format
+below into the file F<formfu_create.conf> and delete the
+F<formfu_create.yml> file.  The below is in L<Config::General> format
 which follows the syntax of Apache config files.
 
    constraints   Required
@@ -645,11 +645,8 @@ Kennedy Clark, C<hkclark@gmail.com>
 
 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
-<https://rt.cpan.org/Public/Dist/Display.html?Name=Catalyst-Manual>.
-
-The most recent version of the Catalyst Tutorial can be found at
-L<http://dev.catalyst.perl.org/repos/Catalyst/Catalyst-Manual/5.80/trunk/lib/Catalyst/Manual/Tutorial/>.
+L<https://rt.cpan.org/Public/Dist/Display.html?Name=Catalyst-Manual>.
 
-Copyright 2006-2010, Kennedy Clark, under the
+Copyright 2006-2011, Kennedy Clark, under the
 Creative Commons Attribution Share-Alike License Version 3.0
 (L<http://creativecommons.org/licenses/by-sa/3.0/us/>).