[html-formfu] nested params merged
Carl Franks
fireartist at gmail.com
Tue Oct 30 11:57:17 GMT 2007
I've merged the nested-params branch back into trunk.
Although there's extensive new tests, I haven't tried it out with a
real application yet - so there may be some teething issues.
Documentation's still needing done.
Some of the template files have been changed - as they need to use
'nested_name' now rather than 'name'. (The next thing I'm going to
work on will make it easier to use templates and easier to upgrade
HTML::FormFu).
To expand on the examples in my last mail...
You can set a Form or Block elements nested_name().
You still just set name() on fields.
$field->nested_name() returns the full name that'll be used in the form markup.
If you set $form->nested_subscript(1), elements names will have the
form "foo[bar][baz]" instead of "foo.bar.baz"
If a field-name or intermediary nested name is an integer, the data
structure returned by $form->params() or $form->param() will be an
array-ref:
"foo.bar.0" => 1
"foo.bar.1" => 2
If you're using any of the Callback processors, or have written your
own processors (constraints, validators, etc) - they generally get the
relevant input value as their 1st argument, and the $params hash-ref
as their 2nd argument.
Because the $params hash-ref is no longer a single-depth hash, but may
contain nested structures, you should no longer simply do stuff like
this:
$foo = $params->{foo};
$params->{foo} = $foo;
if ( exists $params->{foo} ) { }
You should instead use the following helper methods:
$foo = $self->get_nested_hash_value(
$params, $nested_name );
$self->set_nested_hash_value(
$params, $nested_name, $value );
if ( $self->nested_hash_key_exists(
$params, $nested_name ) )
{ }
Um, that's all I can think of for now...
Carl
More information about the HTML-FormFu
mailing list