[html-formfu] value not accepted
Mario Minati
mario.minati at googlemail.com
Wed Sep 26 12:38:33 GMT 2007
On Wednesday 26 September 2007 12:57:27 Josef Chladek wrote:
> Am 26.09.2007 um 12:45 schrieb Carl Franks:
> > On 26/09/2007, Josef Chladek <josef.chladek at gmail.com> wrote:
> >> hello again,
> >>
> >> in my code:
> >>
> >> my $nick = $c->stash->{form}->get_field('nickname');
> >> $nick->value($c->stash->{form}->param('username')) if length($c-
> >>
> >>> stash->{form}->param('nickname')) == 0;
> >>
> >> $c->stash->{form}->process;
> >> $c->log->debug($c->stash->{form}->get_field('nickname')->value);
> >>
> >> in the debug output I can see that nickname is set to the username,
> >> when the form is rendered, the nickname field stays empty - what am I
> >> doing wrong?
> >
> > For text fields, value() is just an alias to default() - and default
> > is ignored when rendering after a submission.
> >
> > I think either of these solutions should work:
> >
> > $nick->default( $form->param('username') );
> > $nick->force_default(1);
> >
> > or
> >
> > $form->add_valid( 'nickname', $form->param('username') );
> >
> > Carl
>
> the latter I'd tried before (and did not work), the solution with
> force_default did it.
You have to change
$c->stash->{form}->input->{'nickname' }
to get your behaviour, but that is a hack as it relies on the internal
behaviour of FormFu, which might change.
So Carl's way is nicer.
In general I think we should create a filter that can do this work for fields
that takes the value of an other field, as this is a common task.
And we could create a shortcut like 'overwrite_value' to do this task in one
function.
What do you think Carl?
Greets,
Mario
More information about the HTML-FormFu
mailing list