HTML::FormFu::Model::HashRef.3pm

Langue: en

Version: 2009-05-26 (debian - 07/07/09)

Section: 3 (Bibliothèques de fonctions)

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

HTML::FormFu, Hash::Flatten

AUTHOR

Moritz Onken, "onken@houseofdesign.de"