NAME

Catalyst::Plugin::Params::Nested - Nested form parameters (ala Ruby on Rails).

SYNOPSIS

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' => ...,
        });

DESCRIPTION

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:

dot notation

<input name="foo.bar.gorch" />

subscript notation

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

INTERNAL METHODS

prepare_parameters

        Overrides "prepare_parameters" in Catalyst to expand the parameter
        data structure post factum.

CAVEATS

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:

$c->req->param("foo.bar");

AUTHORS

Yuval Kogman, "nothingmuch@woobling.org"

Jess Robinson

COPYRIGHT & LICENSE

            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.

SEE ALSO

CGI::Expand