[Catalyst] Form processing with catalyst, html::widget, and template toolkit

Todd Charron todd at neteffect.ca
Fri Jan 27 18:24:58 CET 2006


On Friday 27 January 2006 11:50, Thomas Klausner wrote:
> In each controller, I have a method that generates a widget, eg:
>
> sub widget_register {    # create the 'register' widget
>   my ($self,$c)=@_;
>   my
> $w=$c->widget('register')->method('get')->action('/users/do_register');
> $w->element('Textfield','email')->label('Email');
>   $w->element('Textfield','name')->label('Name')->value('test');
>   ... # more fields, constraints etc
>   $w->indicator('email');    # field to check if theres data
>   $w->element('Submit')->value('register!');
> }
>

Can you clarify exactly how the indicator is used?  Can it be any element or 
do you have to set it for each element that is required to be submitted?  How 
is it checked for submission?  In this case it looks like the action of the 
form does all the work and the indicator itself does nothing.  Is that 
correct?

> Now for form submission:
> sub do_register : Local {
>     my ($self,$c)=@_;
>
>     my $w=$self->widget_register($c);   # get the widget
>     my $result = $w->process($c->req);  # pass the request to the widget
>
>     if ($result->has_errors) {
>        # error!
>     } else {
>        # create object
>     }
> }
>

Is there a way to have the action of the form be the same URL as the form 
itself?  How do you re-populate the form fields? 

Sorry for the barrage of questions but I'm really curious.  

Ideally what I'd like to have is if there are errors the form re-populates 
itself with the errors marked for correction by the user.  Once the form is 
complete we can either just place a message on the same page or in other 
instances redirect to another page.

The other feature that formbuilder had which was very nice was javascript 
validation.  I see some references to javascript validation but no details on 
how to actually use it if the functionality is indeed complete.

Thanks.

Todd



More information about the Catalyst mailing list