duelafn has asked for the wisdom of the Perl Monks concerning the following question:
Is it possible to create parameterized Catalyst roles with method attributes? The closest thing a web search finds is this post whose followup message points to a moosex-methodattributes test file which does create a parameterized role, but as far as I can tell doesn't test any attributes. My attempt (below) compiles but does not produce any (chained) actions.
package Serenevy::CatalystX::Role::CRUDForms; use MooseX::Role::Parameterized -traits => 'MooseX::MethodAttributes:: +Role::Meta::Role'; use namespace::autoclean; use re 'taint'; use 5.010; parameter [qw/ name root path_part model_name /] => ( is => "rw", isa => "Str", required => 1, ); role { my $param = shift; my $NAME = $param->name; my $ROOT = $param->root; my $MODEL = $param->model_name; my $PATH_PART = $param->path_part; method model => sub { $_[1]->model( $MODEL ) }; method root => sub :Chained($ROOT) :PathPart($PATH_PART) :CaptureA +rgs(0) { 1 }; method list => sub :Chained(root) :PathPart("") :Args(0) { my ( $self, $c ) = @_; # ... }; # ... };
This role is consumed in my controiller via
package RiverbendMath::Controller::Int::FieldClass; use Moose; use namespace::autoclean; use re 'taint'; use 5.010; BEGIN { extends 'Catalyst::Controller'; } with 'Serenevy::CatalystX::Role::CRUDForms' => { name => "Field Class", root => "../int", path_part => "field-class", model_name => "DB::EntClass", };
Catalyst 5.80025; Moose 1.09; MooseX::Role::Parameterized 0.19; MooseX::MethodAttributes 0.24
Good Day,
Dean
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Catalyst Parameterized Role with Attributes?
by roman (Monk) on Jan 10, 2012 at 15:03 UTC |