logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

HTML::FormFu::Model::HashRef - handle hashrefs

Author

       Carl Franks <cpan@fireartist.com>

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::Role::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.

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).

Name

       HTML::FormFu::Model::HashRef - handle hashrefs

See Also

       HTML::FormFu, Hash::Flatten

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()

Version

       version 2.07

See Also