From: Florian Ragwitz Date: Fri, 13 Nov 2009 14:49:54 +0000 (+0000) Subject: Allow passing extra args to action constructors using action_args config. X-Git-Tag: 5.80019~13^2~4 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=commitdiff_plain;h=a7e955ae11a973a121bb520eb3577f854f0e082a Allow passing extra args to action constructors using action_args config. --- diff --git a/lib/Catalyst/Controller.pm b/lib/Catalyst/Controller.pm index 1d91b3c..ef889bf 100644 --- a/lib/Catalyst/Controller.pm +++ b/lib/Catalyst/Controller.pm @@ -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 {