tweaked docs based on IRC suggestions
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Controller.pm
index 1d91b3c..c738f9e 100644 (file)
@@ -255,9 +255,15 @@ sub create_action {
     my $class = (exists $args{attributes}{ActionClass}
                     ? $args{attributes}{ActionClass}[0]
                     : $self->_action_class);
-
     Class::MOP::load_class($class);
-    return $class->new( \%args );
+
+    my $action_args = $self->config->{action_args};
+    my %extra_args = (
+        %{ $action_args->{'*'}           || {} },
+        %{ $action_args->{ $args{name} } || {} },
+    );
+
+    return $class->new({ %extra_args, %args });
 }
 
 sub _parse_attrs {
@@ -440,6 +446,23 @@ of setting namespace to '' (the null string).
 
 Sets 'path_prefix', as described below.
 
+=head2 action_args
+
+Allows you to set constructor arguments on your Actions or ActionRoles.  You can
+set args globally (all actions of the controller) and specifically (for a single
+action).
+
+    __PACKAGE__->config({
+        action_args => {
+            '*' => {globalarg1=>'hello', globalarg2=>'goodbye'},
+            'specific_action' => {customarg=>'arg1'},
+        },
+     });
+
+In the case above the action class associated with 'specific_action' would get
+passed the following arguments when it is instantiated: (globalarg1=>'hello',
+globalarg2=>'goodbye', 'customarg=>'arg1').
+
 =head1 METHODS
 
 =head2 BUILDARGS ($app, @args)