X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FDispatcher.pm;h=acd1b591e9e3b198a1031a2cf9597917c3672d42;hb=01ce0928322c5cc24c43435855ee9163076be6c1;hp=1b648431b0458c1491b0fdce43ec8557ca91b9e4;hpb=138ce4c03ae1ffaf58c721057b3f37486ffbc178;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Dispatcher.pm b/lib/Catalyst/Dispatcher.pm index 1b64843..acd1b59 100644 --- a/lib/Catalyst/Dispatcher.pm +++ b/lib/Catalyst/Dispatcher.pm @@ -86,10 +86,10 @@ sub forward { } my $local_args = 0; - my $arguments = []; + my $arguments = $c->req->args; if ( ref( $_[-1] ) eq 'ARRAY' ) { - $arguments = pop(@_); - $local_args++; + $arguments = pop(@_); + $local_args = 1; } my $result; @@ -111,12 +111,9 @@ sub forward { my $tail = $2; $result = $c->get_action( $tail, $1 ); if ($result) { - $command = $tail; - if ($local_args) { unshift( @{$arguments}, @extra_args ) } - else { - $local_args++; - $arguments = \@extra_args; - } + $local_args = 1; + $command = $tail; + unshift( @{$arguments}, @extra_args ); last DESCEND; } unshift( @extra_args, $tail ); @@ -163,9 +160,11 @@ qq/Couldn't forward to command "$command". Invalid action or component./; } - if ($local_args) { local $c->request->{arguments} = [ @{$arguments} ] } - - $result->execute($c); + if ($local_args) { + local $c->request->{arguments} = [ @{$arguments} ]; + $result->execute($c); + } + else { $result->execute($c) } return $c->state; } @@ -195,10 +194,12 @@ sub prepare_action { } # If not, move the last part path to args - unshift @args, pop @path; } + $c->log->debug( 'Path is "' . $c->req->match . '"' ) + if ( $c->debug && $c->req->match ); + $c->log->debug( 'Arguments are "' . join( '/', @args ) . '"' ) if ( $c->debug && @args ); }