[Catalyst] HTML::FormHandler and the Catalyst stash

Jacinta jarich at perltraining.com.au
Wed Jan 16 10:39:18 GMT 2013


G'day folk,

I've been working through the Catalyst tutorial (again) and I decided to =

give HTML::FormHandler a go.  It's tutorial at =

https://metacpan.org/module/GSHANK/HTML-FormHandler-0.40017/lib/HTML/FormHa=
ndler/Manual/Tutorial.pod =

has been great.

However I am stuck on something I am certain should be easy, but is not =

proving so...

As per the tutorial my edit method looks much like this:

    sub edit : Local {
         my ( $self, $c, $book_id ) =3D @_;

         $c->stash( template =3D> 'books/edit.tt2',
                    form =3D> $self->form );

         # Validate and insert/update database
         return unless $self->form->process( item_id =3D> $book_id,
            params =3D> $c->req->parameters,
            schema =3D> $c->model('DB')->schema );

         # Form validated, return to the books list
         $c->flash->{status_msg} =3D 'Book saved';
         $c->res->redirect($c->uri_for('list'));
    }


and that works beautifully.  However, I've enhanced my examples as I've =

gone along and instead of going to the list of books, I want to go to my =

review page and print out all of the details (including extra stuff) of =

this specific book I've just added.

So I would like to change the last line to be:

    $c->res->redirect($c->uri_for($self->action_for('review'), [$book_id]));


This works perfectly if I'm editing a book, but if I'm creating a book =

for the first time, $book_id is undefined so I pass in an undefined id =

to review.  Review seems to deal with that okay:

    sub review :Chained('object') :PathPart('review') :Args(0) {
         my ($self, $c) =3D @_;

        my $book =3D $c->stash->{object};

         ...

until I want to use $book for something.

I have looked through most of the documentation for HTML::FormHandler =

and I can't find anything that actually documents process() (it returns =

1 on success) and I don't know the Catalyst stash well enough.  Is this =

information hiding therein or do I need to create a method to get the =

last insert id?

All help gratefully appreciated.

     Jacinta
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.scsys.co.uk/pipermail/catalyst/attachments/20130116/3f1f0=
ed9/attachment.htm


More information about the Catalyst mailing list