Suggestion from Stefan Kangas about "un-indenting" code in Emacs (thanks, Stefan)
[catagits/Catalyst-Manual.git] / lib / Catalyst / Manual / Tutorial / AdvancedCRUD / FormFu.pod
index f261950..cbcf259 100644 (file)
@@ -67,7 +67,7 @@ for additional form management options other than
 L<HTML::FormFu|HTML::FormFu>.
 
 
-=head1 Install C<HTML::FormFu>
+=head1 Install HTML::FormFu
 
 If you are following along in Debian 5, it turns out that some of the 
 modules we need are not yet available as Debian packages at the time 
@@ -91,13 +91,13 @@ that aren't available as Debian packages:
     sudo cpan Catalyst::Component::InstancePerContext Catalyst::Controller::HTML::FormFu
 
 
-=head1 C<HTML::FormFu> FORM CREATION
+=head1 HTML::FormFu FORM CREATION
 
 This section looks at how L<HTML::FormFu|HTML::FormFu> can be used to 
 add additional functionality to the manually created form from Chapter 4.
 
 
-=head2 Inherit From C<Catalyst::Controller::HTML::FormFu>
+=head2 Inherit From Catalyst::Controller::HTML::FormFu
 
 First, change your C<lib/MyApp/Controller/Books.pm> to inherit from
 L<Catalyst::Controller::HTML::FormFu|Catalyst::Controller::HTML::FormFu>
@@ -121,7 +121,7 @@ following method:
     
     =cut
     
-    sub formfu_create :Chained('base) :PathPart('formfu_create') :Args(0) :FormConfig {
+    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
@@ -261,7 +261,7 @@ 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
+=head2 Test The HTML::FormFu Create Form
 
 Press C<Ctrl-C> to kill the previous server instance (if it's still
 running) and restart it:
@@ -291,7 +291,7 @@ the previous paragraph is that the I<web application> itself is not
 performing any validation.
 
 
-=head1 C<HTML::FormFu> VALIDATION AND FILTERING
+=head1 HTML::FormFu VALIDATION AND FILTERING
 
 Although the use of L<HTML::FormFu|HTML::FormFu> in the previous section 
 did provide an automated mechanism to build the form, the real power of 
@@ -450,10 +450,10 @@ bottom:
     
     sub formfu_edit :Chained('object') :PathPart('formfu_edit') :Args(0) 
             :FormConfig('books/formfu_create.yml') {
-        my ($self, $c, $id) = @_;
+        my ($self, $c) = @_;
     
-        # Get the specified book
-        my $book = $c->model('DB::Books')->find($id);
+        # 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) {
@@ -481,7 +481,7 @@ bottom:
             my @author_objs = $c->model("DB::Authors")->all();
             # Create an array of arrayrefs where each arrayref is an author
             my @authors;
-            foreach (sort {$a->last_name cmp $b->last_name} @author_bjs) {
+            foreach (sort {$a->last_name cmp $b->last_name} @author_objs) {
                 push(@authors, [$_->id, $_->last_name]);
             }
             # Get the select added by the config file
@@ -504,19 +504,27 @@ the common code in separate methods).  The main differences are:
 
 =item *
 
-We accept C<$id> as an argument via the URL.
+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>).
 
 =item *
 
-We use C<$id> to look up the existing book from the database.
+We load the book object from the stash (found using the $id passed to 
+the Chained object method)
 
 =item *
 
-We make sure the C<$id> and book lookup returned a valid book.  If not, 
-we set the error message and return to the book list.
+We use C<$id> to look up the existing book from the database.
 
 =item *
 
+We make sure the book lookup returned a valid book.  If not, we set 
+the 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 existing 
 book.
@@ -564,6 +572,7 @@ Stevens as a co-author (control-click), and click Submit.  You will then
 be returned to the book list with a "Book edited" message at the top in 
 green.  Experiment with other edits to various books.
 
+
 =head2 More Things to Try
 
 You are now armed with enough knowledge to be dangerous.  You can keep
@@ -595,6 +604,7 @@ Support the CRUD cycle for authors.
 Or you can proceed to write your own application, which is probably the
 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
@@ -649,7 +659,6 @@ Apache config files.
    indicator   submit
    
 
-
 =head1 AUTHOR
 
 Kennedy Clark, C<hkclark@gmail.com>