use namespace::clean -except => 'meta';
has class => (is => 'rw');
+has instance => (is=>'ro', required=>0, predicate=>'has_instance');
has namespace => (is => 'rw');
has 'reverse' => (is => 'rw');
has attributes => (is => 'rw');
sub dispatch { # Execute ourselves against a context
my ( $self, $c ) = @_;
- return $c->execute( $self->class, $self );
+ if($self->has_instance) {
+ return $c->execute( $self->instance, $self );
+ } else {
+ return $c->execute( $self->class, $self );
+ }
}
sub execute {
# go to a string path ("/foo/bar/gorch")
# or action object
+ #
if (blessed($command) && $command->isa('Catalyst::Action')) {
$action = $command;
}
return $possible_action if $possible_action;
}
- my $component_to_call = blessed($component_or_class) ? $component_or_class : $component_class;
-
- if ( my $code = $component_to_call->can($method) ) {
+ if ( my $code = $component_class->can($method) ) {
return $self->_method_action_class->new(
{
name => $method,
code => $code,
reverse => "$component_class->$method",
- class => $component_to_call,
+ class => $component_class,
+ ( blessed($component_or_class) ? (instance => $component_or_class):() ),
namespace => Catalyst::Utils::class2prefix(
$component_class, ref($c)->config->{case_sensitive}
),
use base 'Catalyst::Controller';
- sub test :Local Args(0) {
+ sub test_forward :Local Args(0) {
my( $self, $c ) = @_;
my $view = $c->view('Test');
$c->forward($view);
sub process {
my ($self, $c, @args) = @_;
$c->res->body("$self");
-
}
package MyApp;
use Catalyst::Test 'MyApp';
{
- ok my $res = request GET 'root/test';
+ ok my $res = request GET 'root/test_forward';
}
done_testing(2);