X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FView%2FComponent%2FSubInclude%2FSubRequest.pm;h=4b997c0f427c473a7b354d800240be8ef6a46795;hb=7c937cccd1caf12c59b11f07ee76144f770b3ad8;hp=c40a77ddf777e152d90b148d834073dc8280be66;hpb=11a93ea1523b28e1f2771fdb4047cc12c539891d;p=catagits%2FCatalyst-View-Component-SubInclude.git diff --git a/lib/Catalyst/View/Component/SubInclude/SubRequest.pm b/lib/Catalyst/View/Component/SubInclude/SubRequest.pm index c40a77d..4b997c0 100644 --- a/lib/Catalyst/View/Component/SubInclude/SubRequest.pm +++ b/lib/Catalyst/View/Component/SubInclude/SubRequest.pm @@ -11,11 +11,11 @@ Catalyst::View::Component::SubInclude::SubRequest - Sub-requests plugin for C::V =head1 VERSION -Version 0.01 +Version 0.05 =cut -our $VERSION = '0.01'; +our $VERSION = '0.05'; =head1 SYNOPSIS @@ -55,13 +55,17 @@ It requires L. =head2 C -This will translate to the following sub-request call: +This will make a sub-request call to the action specified by C<$path>. Note that +C<$path> should be the private action path - translation to the public path is +handled internally. - $c->sub_request( $path, {}, @args ); +So, after path translation, the call will be (roughly) equivalent to: + + $c->sub_request( $translated_path, {}, @args ); Notice that the stash will always be empty. This behavior could be configurable in the future through an additional switch - for now, this behavior guarantees a -common interface for plugins. +common interface for all plugins. =cut @@ -72,7 +76,14 @@ sub generate_subinclude { croak "subincludes through subrequests require Catalyst::Plugin::SubRequest" unless $c->can('sub_request'); - $c->sub_request( $path, $stash, @params ); + my $args = ref $params[0] eq 'ARRAY' ? shift @params : []; + + my $dispatcher = $c->dispatcher; + my ($action) = $dispatcher->_invoke_as_path( $c, $path, $args ); + + my $uri = $c->uri_for( $action, $args, @params ); + + $c->sub_request( $uri->path, $stash, @params ); } =head1 SEE ALSO