Why not adopt me?
NAME
HTML::FormFu::Model::HashRef - handle hashrefs
SYNOPSIS
---
elements:
- user_id
- user_name
- type: Repeatable
nested_name: addresses
elements:
- type: Hidden
name: id
- street
$form->model('HashRef')->default_values( {
user_id => 123,
user_name => 'Hans',
addresses => [
{ id => 2,
street => 'Somewhere' },
{ id => 3,
street => 'Somewhere Else' }
]
} );
$form->default_model('HashRef');
my $hashref = $form->model->create();
# $hashref is very much the same as the hashref you passed to default_values()
DESCRIPTION
If you need the content of a formular as hashref or for processing with other modules like JSON
you can use this model.
METHODS
create
This method creates a hashref from a filled form. This form can be filled by calling "default_values" in HTML::FormFu, default_values of any other model class (e. g. HTML::FormFu::Model::DBIC) or by simply submitting the form.
If "deflators" is true all deflators are processed (defaults to 1
).
If "options" is true the value of all elements which have options like HTML::FormFu::Element::Select will be transformed.
---
elements:
- type: Select
name: select
options:
- [1, "Foo"]
- [2, "Bar"]
If the value of select
is 1
, create will create this hashref:
{ 'select' => { label => 'Foo', value => 1 } }
If there is more than one value selected, an arrayref is created instead:
{ 'select' => [ { label => 'Foo', value => 1 },
{ label => 'Bar', value => 2 } ] }
If "options" is false, the output will look like this:
{ 'select' => 1 }
respectively
{ 'select' => [1, 2] }
"options" is false by default.
To get a flattened hash, you can set /flatten
to a true value (defaults to 0
). This will generate a hash which uses the nested name of each field as key and the value of this field as hash value. If there is a field which has more than one value, a counter is added. The above example would result in a hash like this using /flatten
:
{ 'select_0' => 1,
'select_1' => 2 }
update
Alias for "create".
default_values
Populate a form using a hashref. This hashref has the same format as the output of "create". If "inflators" is true, all inflators will be processed (defaults to 1
).
CONFIGURATION
These methods do not return the model object so chaining is not possible!
options
Adds the label of a value to the hashref if the element has "options" in HTML::FormFu::Element::_Group. See "create" for an example. Defaults to 0
.
flatten
Flattens the hash using Hash::Flatten. See "create" for an example. Defaults to 0
.
deflators
If true, processes deflators in /create
. Defaults to 1
.
inflators
If true, processes inflators in /default_values
. Defaults to 1
.
SEE ALSO
AUTHOR
Moritz Onken, onken@houseofdesign.de