[html-formfu] value not accepted

Mario Minati mario.minati at googlemail.com
Wed Sep 26 15:26:23 GMT 2007


On Wednesday 26 September 2007 14:27:22 Carl Franks wrote:
> On 26/09/2007, Mario Minati <mario.minati at googlemail.com> wrote:
> > 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.
>
> I think a filter would be a good idea.
>
> I think rather than create a new method, I'll take a look at
> add_valid(), and see why that doesn't work.

I created this method allready, but I will remove it again.

I just had a look at add_valid and _render_value ind _field and add_valid.t 
and looks good.

Greets,
Mario



More information about the HTML-FormFu mailing list