use strict;
-our $VERSION = '0.04';
+our $VERSION = '0.08';
=head1 NAME
use Catalyst 'SubRequest';
- $c->subreq('/test/foo/bar', template='magic.tt');
+ $c->subreq('/test/foo/bar', { template => 'magic.tt' });
=head1 DESCRIPTION
=over 4
-=item subreq path, [stash]
+=item subreq path, [stash as hash ref], [parameters as hash ref]
=item sub_request
use Data::Dumper qw/Dumper/;
sub sub_request {
- my ( $c, $path, $stash ) = @_;
+ my ( $c, $path, $stash, $params ) = @_;
my %old_req;
$path =~ s/^\///;
- $old_req{stash} = $c->{stash};$c->{stash}=$stash || {};
+ local $c->{stash}=$stash || {};
$old_req{content} = $c->res->output;$c->res->output(undef);
$old_req{args} = $c->req->arguments;
$old_req{action} = $c->req->action;$c->req->action(undef);
- $old_req{path} = $c->req->path;$c->req->path($path);
- $old_req{params} = $c->req->params;$c->req->{params} = {};
+ $old_req{path} = $c->req->path;$c->req->path($path);
+ $old_req{params} = $c->req->params;$c->req->params($params || {});
$c->prepare_action();
- $c->log->debug("Subrequest to $path , action is ".
- $c->req->action )
- if $c->debug;
+ $c->log->debug("Subrequest to $path , action is ". $c->req->action )
+ if $c->debug;
+ # FIXME: Hack until proper patch in NEXT.
+ local $NEXT::NEXT{$c,'dispatch'};
$c->dispatch();
my $output = $c->res->output;
- $c->{stash} = $old_req{stash};
$c->req->{params}=$old_req{params};
$c->req->arguments($old_req{args});
+ $c->req->path($old_req{path});
$c->res->output($old_req{content});
return $output;
}