As a new FormFu user, I saw that I could modify the form before it got rendered:
sub index :Path :Args(0) :FormConfig {
my ( $self, $c ) = @_;
my $form = $c->stash->{form};
my $field = $form->get_all_element({name => 'foo'});
$field->label('new label'); # this works
if ( $form->submitted_and_valid ) {
... the usual
}
}
However, the same is not true of constraints. Adding the code below to
the index sub, before if ( $form->submitted_and_valid ), has no
effect:
$field->constraint({
type => 'Callback',
callback => \&never_gets_called,
});
$field->validator('Callback')->callback( \&never_gets_called );
I believe another user encountered the same problem:
http://www.mail-archive.com/[email protected]/msg00970.html
There are two workarounds:
1. Add the constraint in the form config file
2. Call $form->process before $form->submitted_and_valid. This is
really counter-intuitive to new users: since $field->label works
without $form->process, why would $field->validator need a
$form->process?
If form->process() really needs to be called for callbacks to get
registered, then maybe the doc for process() should mention this.
HTH,
Dan
_______________________________________________
HTML-FormFu mailing list
[email protected]
http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/html-formfu