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
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.