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
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>
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:
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
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
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
indicator submit
-
=head1 AUTHOR
Kennedy Clark, C<hkclark@gmail.com>
algorithms are supported. See C<Digest> for more information.
-=head2 Enable SHA-1 Hash Passwords in
-C<Catalyst::Plugin::Authentication::Store::DBIC>
+=head2 Enable SHA-1 Hash Passwords in Catalyst::Plugin::Authentication::Store::DBIC
Edit C<myapp.conf> and update it to match (the C<password_type> and
C<password_hash_type> are new, everything else is the same):
roles assigned to the user.
-=head2 Limit C<Books::add> to C<admin> Users
+=head2 Limit Books::add to 'admin' Users
C<IF> statements in TT templates simply control the output that is sent
to the user's browser; it provides no real enforcement (if users know or
it then sets the template that should handle this request.
-=head2 Include a Template for the C<url_create> Action:
+=head2 Include a Template for the 'url_create' Action:
Edit C<root/src/books/create_done.tt2> and then enter:
from the examples in Chapter 3.
-=head2 Try the C<url_create> Feature
+=head2 Try the 'url_create' Feature
If the application is still running from before, use C<Ctrl-C> to kill
it. Then restart the server:
are now seven books shown (two copies of TCPIP_Illustrated_Vol-2).
-=head2 Refactor to Use a "Base" Method to Start the Chains
+=head2 Refactor to Use a 'base' Method to Start the Chains
Let's make a quick update to our initial Chained action to show a
little more of the power of chaining. First, open
be displayed.
-=head2 Using C<uri_for> to Pass Query Parameters
+=head2 Using 'uri_for' to Pass Query Parameters
There are several ways to pass information across a redirect. One
option is to use the C<flash> technique that we will see in Chapter 5
L<Appendix 2|Catalyst::Manual::Tutorial::Appendices>.
-=head1 DATABASE ACCESS WITH C<DBIx::Class>
+=head1 DATABASE ACCESS WITH DBIx::Class
Catalyst can be used with virtually any form of persistent datastore
available via Perl. For example,
template -- the wrapper will provide the overall feel of the page.
-=head1 A STATIC DATABASE MODEL WITH C<DBIx::Class>
+=head1 A STATIC DATABASE MODEL WITH DBIx::Class
First, let's be sure we have a recent versino of the DBIC helper,
L<Catalyst::Model::DBIC::Schema|Catalyst::Model::DBIC::Schema>, by
if you wish.>
-=head2 Using C<RenderView> for the Default View
+=head2 Using 'RenderView' for the Default View
Once your controller logic has processed the request from a user, it
forwards processing to your view in order to generate the appropriate