Catalyst::TraitFor::Request::Params::Hashed - Access to parameters


Catalyst-TraitFor-Request-Params-Hashed documentation Contained in the Catalyst-TraitFor-Request-Params-Hashed distribution.

Index


Code Index:

NAME

Top

Catalyst::TraitFor::Request::Params::Hashed - Access to parameters like name[index] as hashes for Catalyst::Request.

VERSION

Top

Version is 0.03

SYNOPSIS

Top

    #
    # application class
    #
    package TestApp;

    use Moose;
    use namespace::autoclean;
    use Catalyst qw/ ......... /;
    extends 'Catalyst';
    use CatalystX::RoleApplicator;

    __PACKAGE__->apply_request_class_roles(qw/
        Catalyst::TraitFor::Request::Params::Hashed
    /);

    #
    # controller class
    #
    package TestApp::Controller::Test;
    .........
        # query string was like
        # site[name1]=100&site[name1]=150&site[name2]=200
        my $site = $c->req->hashed_params->{site};

        # $site is hashref:
        #
        # $site = {
        #   name1 => [100, 150],
        #   name2 => 200,
        # }
    .........

DESCRIPTION

Top

You can access hashed_parameters, hashed_query_parameters, hashed_body_parameters to get access to parameters as to hashes. Also you can use hashes_params, hashed_query_params and hashed_body_params as shortcuts. Or, if you too lazy, you can use hparams, hquery_params and hbody_params :)

Note, that this trait gives you read-only version of params, query_params and body_params respectively. Also note, that any change to any of three above <WILL NOT HAVE> any effect to all of hashed*params.

METHODS

Top

hashed_params

hparams

hashed_query_params

hquery_params

hashed_body_params

hbody_params

TODO

Top

Write tests.

SEE ALSO

Top

Catalyst, Catalyst::Request, Catalyst::TraitFor::Request::BrowserDetect

SUPPORT

Top

* Report bugs or feature requests

http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Catalyst-TraitFor-Request-Params-Hashed

http://www.assembla.com/spaces/Catalyst-TraitFor-Request-Params-Hashed/tickets

* Git repository

git clone git://git.assembla.com/Catalyst-TraitFor-Request-Params-Hashed.git

AUTHOR

Top

Oleg Kostyuk, <cub#cpan.org>

COPYRIGHT & LICENSE

Top


Catalyst-TraitFor-Request-Params-Hashed documentation Contained in the Catalyst-TraitFor-Request-Params-Hashed distribution.
package Catalyst::TraitFor::Request::Params::Hashed;

use namespace::autoclean;
use Moose::Role;
use MooseX::Types::Moose qw/ HashRef /;

our $VERSION = '0.03';

has hashed_parameters => (
    is      => 'ro',
    isa     => HashRef,
    lazy    => 1,
    builder => '_build_hashed_parameters',
);

has hashed_query_parameters => (
    is      => 'ro',
    isa     => HashRef,
    lazy    => 1,
    builder => '_build_hashed_query_parameters',
);

has hashed_body_parameters => (
    is      => 'ro',
    isa     => HashRef,
    lazy    => 1,
    builder => '_build_hashed_body_parameters',
);

sub __build_hashed {
    my ( $self, $params ) = @_;
    $params = {%$params};    # make copy
    for my $key ( keys %$params ) {
        next unless $key =~ m/^([^[]+)\[(.*)\]$/;
        $params->{$1}{$2} = delete $params->{$key};
    }
    return $params;
}

sub _build_hashed_parameters {
    my ($self) = @_;
    return $self->__build_hashed( $self->parameters );
}

sub _build_hashed_query_parameters {
    my ($self) = @_;
    return $self->__build_hashed( $self->query_parameters );
}

sub _build_hashed_body_parameters {
    my ($self) = @_;
    return $self->__build_hashed( $self->body_parameters );
}

sub hashed_params       { shift->hashed_parameters }
sub hparams             { shift->hashed_parameters }
sub hashed_query_params { shift->hashed_query_parameters }
sub hquery_params       { shift->hashed_query_parameters }
sub hashed_body_params  { shift->hashed_body_parameters }
sub hbody_params        { shift->hashed_body_parameters }

1;    # End of Catalyst::TraitFor::Request::Params::Hashed