[Catalyst] C::C::FormBuilder and TT

Ferruccio Zamuner nonsolosoft at diff.org
Mon Nov 5 20:28:13 GMT 2007


Hi,

I've found some strange behaviours from Catalyst about CGI::FormBuilder 
and TT2:

example 1:

in
----- edit.tt ---
[% IF FormBuilder %]
 TRUE
[% ELSE %]
 FALSE
[% END %]
----- end ----

----- myapp::Controller::mycontroller ---
sub edit : Local Form {
               my ( $self, $c ) = @_;
               $self->formbuilder->method('post');   # set form method
}
------ end ----

template output returns:
 TRUE

but if I call explicitly the view:
----- myapp::Controller::mycontroller ---
sub edit : Local Form {
               my ( $self, $c ) = @_;
               $self->formbuilder->method('post');   # set form method
               $c->forward($c->view('TT'));
               # and myapp::View::TT has been defined
}
------ end ----

template output returns:
 FALSE

example 2:

according man CGI::FormBuilder::Template::TT2

       By default, the Template Toolkit makes all the form and field informa-
       tion accessible through simple variables.

[...] 
           [% fields %]  -  List of fields
           [% field  %]  -  Hash of fields (for lookup by name)
 

In my template, for example to fetch label of the first_name field:
 
[% FormBuilder.field.first_name.label %]
 
but it returns anything.
 
While [% FormBuilder.render %] does and
 
[% IF FormBuilder.field %]TRUE[% ELSE %]FALSE[% END %]
 
returns TRUE
 
but
 
[% FOREACH f IN FormBuilder.field %]
 [% f %] label: [% FormBuilder.field.$f.label %]
[% END %]
 
returns 'first_name' and void label.

[% FOREACH f IN FormBuilder.field %]
 [% f %] has label: [% IF FormBuilder.field.$f.label %]TRUE[% ELSE %]FALSE[% END %]
[% END %]

 returns

first_name has label: FALSE

What's kind of mistake I've done?

I've tried to subscribe the formbuilder mailing list but it's out of service.
I would like to use FormBuilder.field hash to create custom html forms.

Bye,                 \fer




More information about the Catalyst mailing list