Catalyst::Manual::Tutorial::AdvancedCRUD - Catalyst Tutorial - Part 8: Advanced CRUD
+
=head1 OVERVIEW
This is B<Part 8 of 9> for the Catalyst tutorial.
Here, we will make use of the L<HTML::Widget|HTML::Widget> to not only
ease form creation, but to also provide validation of the submitted
-data. The approached used by the part of the tutorial is to slowly
+data. The approached used by this part of the tutorial is to slowly
incorporate additional L<HTML::Widget|HTML::Widget> functionality in a
step-wise fashion (we start with fairly simple form creation and then
move on to more complex and "magical" features such as validation and
B<Note:> Part 8 of the tutorial is optional. Users who do not wish to
use L<HTML::Widget|HTML::Widget> may skip this part.
-B<TIP>: Note that all of the code for this part of the tutorial can be
-pulled from the Catalyst Subversion repository in one step with the
-following command:
-
- svn co http://dev.catalyst.perl.org/repos/Catalyst/tags/examples/Tutorial/MyApp/5.7/AdvancedCRUD MyApp
+You can checkout the source code for this example from the catalyst subversion repository as per the instructions in L<Catalyst::Manual::Tutorial::Intro>
=head1 C<HTML::WIDGET> FORM CREATION
# Set a status message for the user
$c->stash->{status_msg} = 'Book created';
- # Use 'hw_create' to redisplay the form
+ # Use 'hw_create' to redisplay the form. As discussed in
+ # Part 3, 'detach' is like 'forward', but it does not return
$c->detach('hw_create');
}
(e.g., C<hw_create_do> for a create operation but C<hw_update_do> to
update an existing book object).
+B<NOTE:> If you receive an error about Catalyst not being able to find
+the template C<hw_create_do.tt2>, please verify that you followed the
+instructions in the final section of
+L<Catalyst Basics|Catalyst::Manual::Tutorial::CatalystBasics> where
+you returned to a manually specified template. You can either use
+C<forward>/C<detach> B<OR> default template names, but the two cannot
+be used together.
+
+
=head2 Update the CSS
Edit C<root/src/ttsite.css> and add the following lines to the bottom of
<p>
HTML::Widget:
<a href="[% Catalyst.uri_for('hw_create') %]">Create</a>
- <a href="[% Catalyst.uri_for('hw_update') %]">Update</a>
</p>
+
=head2 Test The <HTML::Widget> Create Form
Press C<Ctrl-C> to kill the previous server instance (if it's still
}
# Set a status message for the user
- $c->stash->{status_msg} = 'Book created';
+ $c->flash->{status_msg} = 'Book created';
# Redisplay an empty form for another
$c->stash->{widget_result} = $w->result;
$ script/myapp_server.pl
-Try adding a book that validate. Return to the book list and the book
+Try adding a book that validates. Return to the book list and the book
you added should be visible.
return map { $self->_build_element($_) } @{$element};
}
my $e = $element->clone;
- my $class = $e->attr('class') || '';
$e = new HTML::Element('span', class => 'fields_with_errors')->push_content($e)
if $self->error && $e->tag eq 'input';
$ script/myapp_server.pl
-Try adding a book that validate. Return to the book list and the book
+Try adding a book that validates. Return to the book list and the book
you added should be visible.