Catalyst::Plugin::Params::Nested - Nested form parameters (ala Ruby on Rails).
use Catalyst qw/Params::Nested/; # using this html <form ...> <!-- can be with either subscripted or dot notation --> <input name="foo[bar]" ... /> <input name="foo.gorch" ... /> </form> # turns params into hashrefs: $c->req->param('foo')->{bar}; $c->req->params({ # extra params foo => { bar => ..., gorch => ... }, # original params untouched 'foo[bar]' => ..., 'foo.gorch' => ..., });
Ruby on Rails has a nice feature to create nested parameters that help with the organization of data in a form - parameters can be an arbitrarily deep nested structure.
The way this structure is denoted is that when you construct a form the field names have a special syntax which is parsed.
This plugin supports two syntaxes:
<input name="foo.bar.gorch" />
<input name="foo[bar][gorch]" />
When reading query parameters from $c->req you can now access the all the items starting with "foo" as one entity using $c->req->param('foo');. Each subitem, denoted by either the dot or the square brackets, will be returned as a further deeper hashref.
$c->req
$c->req->param('foo');
Overrides "prepare_uploads" in Catalyst to expand the parameter data structure post factum.
No attempt is made to merge data intelligently. If you do this:
<input name="foo" /> <input name="foo.bar" />
the foo parameter will stay untouched, and you'll have to access foo.bar using its full string name:
foo
foo.bar
$c->req->param("foo.bar");
Yuval Kogman, nothingmuch@woobling.org
nothingmuch@woobling.org
Jess Robinson
Copyright (c) 2005 the aforementioned authors. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
CGI::Expand
To install Catalyst::Plugin::Params::Nested, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Catalyst::Plugin::Params::Nested
CPAN shell
perl -MCPAN -e shell install Catalyst::Plugin::Params::Nested
For more information on module installation, please visit the detailed CPAN module installation guide.