This portion of the tutorial explores L<HTML::FormFu|HTML::FormFu> 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.03007.
+using HTML::FormFu version 0.05001.
See
L<Catalyst::Manual::Tutorial::09_AdvancedCRUD|Catalyst::Manual::Tutorial::09_AdvancedCRUD>
L<HTML::FormFu|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
-this was written. To install it with a combination of Debian packages
-and traditional CPAN modules, first use C<aptitude> to install most of
-the modules:
-
-we need to install the
-L<HTML::FormFu|HTML::FormFu> package:
-
- sudo aptitude -y install libhtml-formfu-perl libmoose-perl \
- libregexp-assemble-perl libhtml-formfu-model-dbic-perl
-
- ...
-
- sudo aptitude clean
-
-Then use the following command to install directly from CPAN the modules
-that aren't available as Debian packages:
-
- sudo cpan Catalyst::Component::InstancePerContext Catalyst::Controller::HTML::FormFu
-
-
=head1 HTML::FormFu FORM CREATION
This section looks at how L<HTML::FormFu|HTML::FormFu> can be used to
First, change your C<lib/MyApp/Controller/Books.pm> to inherit from
L<Catalyst::Controller::HTML::FormFu|Catalyst::Controller::HTML::FormFu>
-by changing the C<use parent> line from the default of:
+by changing the C<extends> line from the default of:
- use parent 'Catalyst::Controller';
+ BEGIN {extends 'Catalyst::Controller'; }
to use the FormFu base controller class:
- use parent 'Catalyst::Controller::HTML::FormFu';
+ BEGIN {extends 'Catalyst::Controller::HTML::FormFu'; }
+Don't forget to add:
+
+ requires 'Catalyst::Controller::HTML::FormFu';
+
+to your C<Makefile.PL>.
=head2 Add Action to Display and Save the Form
}
# Set the template
- $c->stash->{template} = 'books/formfu_create.tt2';
+ $c->stash(template => 'books/formfu_create.tt2');
}
[%# Render the HTML::FormFu Form %]
[% form %]
- <p><a href="[% c.uri_for(c.controller.action_for('list')) %]">Return to book list</a></p>
+ <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>
=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:
+Make sure the server is running with the "-r" restart option:
- $ script/myapp_server.pl
+ $ script/myapp_server.pl -r
Login as C<test01> (password: mypass). Once at the Book List page,
click the new HTML::FormFu "Create" link at the bottom to display the
form. Fill in the following values:
- Title = "Internetworking with TCP/IP Vol. II"
- Rating = "4"
- Author = "Comer"
-
+ Title: Internetworking with TCP/IP Vol. II
+ Rating: 4
+ Author: Comer
+
Click the Submit button, and you will be returned to the Book List page
with a "Book created" status message displayed.
=head2 Try Out the Updated Form
-Press C<Ctrl-C> to kill the previous server instance (if it's still
-running) and restart it:
-
- $ script/myapp_server.pl
-
Make sure you are still logged in as C<test01> and try adding a book
with various errors: title less than 5 characters, non-numeric rating, a
rating of 0 or 6, etc. Also try selecting one, two, and zero authors.
}
# Set the template
- $c->stash->{template} = 'books/formfu_create.tt2';
+ $c->stash(template => 'books/formfu_create.tt2');
}
Most of this code should look familiar to what we used in the
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
=head2 Try Out the Edit/Update Feature
-Press C<Ctrl-C> to kill the previous server instance (if it's still
-running) and restart it:
-
- $ script/myapp_server.pl
-
Make sure you are still logged in as C<test01> and go to the
L<http://localhost:3000/books/list> URL in your browser. Click the
"Edit" link next to "Internetworking with TCP/IP Vol. II", change the
real reason you worked through this Tutorial in the first place.
-=head2 Config::General Config for this tutorial
+=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
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/>.
-Copyright 2006-2008, Kennedy Clark, under Creative Commons License
-(L<http://creativecommons.org/licenses/by-sa/3.0/us/>).
+Copyright 2006-2010, Kennedy Clark, under the
+Creative Commons Attribution Share-Alike License Version 3.0
+(L<http://creativecommons.org/licenses/by-sa/3.0/us/>).