Skip to content

Turns request parameters into nested data structures using CGI::Expand.

Notifications You must be signed in to change notification settings

sshaw/Mojolicious-Plugin-ParamExpand

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NAME

Mojolicious::Plugin::ParamExpand - Use objects and data structures in your forms

SYNOPSIS

# Mojolicious
$self->plugin('ParamExpand', %options);

# Mojolicious::Lite
plugin 'ParamExpand', %options;

# In your action
sub action
{
    my $self = shift;
    my $order = $self->param('order');
    $order->{address};
    $order->{items}->[0]->{id};
    $order->{items}->[0]->{price};
    # ...
}

DESCRIPTION

Mojolicious::Plugin::ParamExpand turns request parameters into nested data structures using CGI::Expand.

MOJOLICIOUS VERSION

Less than 2.52

Due to the old way Mojolicious::Controller handled multi-valued request parameters versions prior to 2.52 will not work with this plugin. If this is a problem for you try Mojolicious::Plugin::GroupedParams.

Greater than 5.57

"param" in Mojolicious::Controller no longer returns an array. You must call "every_param" in Mojolicious::Controller.

OPTIONS

Options must be specified when loading the plugin.

separator

$self->plugin('ParamExpand', separator => ',')

The character used to separate the data structure's hierarchy in the flattened parameter. Defaults to '.'.

max_array

$self->plugin('ParamExpand', max_array => 10)

Maximum number of array elements CGI::Expand will create. Defaults to 100. If a parameter contains more than max_array elements an exception will be raised.

To force the array into a hash keyed by its indexes set this to 0.

Methods

param

This is just "param" in Mojolicious::Controller but, when using Mojolicious::Plugin::ParamExpand, a request with the parameters

users.0.name=nameA&users.1.name=nameB&id=123

will return a nested data structure for the param 'users'

@users = $self->param('users');
$users[0]->{name};
$users[1]->{name};

Other parameters can be accessed as usual

$id = $self->param('id');

The flattened parameter name can also be used

$name0 = $self->param('users.0.name');

Arguments

$name

The name of the parameter.

Returns

The value for the given parameter. If applicable it will be an expanded data structure.

Top level arrays will be returned as arrays not as array references. This is how Mojolicious behaves. In other words

users.0=userA&users.1=userB

is equivlent to

users=userA&users=userB

If this is undesirable you could set max_array to zero.

SEE ALSO

CGI::Expand, Mojolicious::Plugin::FormFields, Mojolicious::Plugin::GroupedParams

COPYRIGHT

Copyright (c) 2012-2016 Skye Shaw.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

About

Turns request parameters into nested data structures using CGI::Expand.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages