X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FView%2FComponent%2FSubInclude%2FSubRequest.pm;h=c1c882a518c645d48a8e1d5ff559ea6ac6f79cf0;hb=7094e990d51cd17a80ceb30cea0eca4c1295b395;hp=7ba7828d9f938d6518aac5defed3b2d435be0ca1;hpb=be2a019af2b1ffb2672e77b65e3644ee6ee278cd;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 7ba7828..c1c882a 100644 --- a/lib/Catalyst/View/Component/SubInclude/SubRequest.pm +++ b/lib/Catalyst/View/Component/SubInclude/SubRequest.pm @@ -3,7 +3,8 @@ use warnings; use strict; use Carp qw/croak/; -use namespace::clean qw/croak/; +use Scalar::Util qw/blessed/; +use namespace::clean; =head1 NAME @@ -11,11 +12,11 @@ Catalyst::View::Component::SubInclude::SubRequest - Sub-requests plugin for C::V =head1 VERSION -Version 0.03 +Version 0.07 =cut -our $VERSION = '0.03'; +our $VERSION = '0.07'; =head1 SYNOPSIS @@ -70,20 +71,21 @@ common interface for all plugins. =cut sub generate_subinclude { - my ($class, $c, $path, @params) = @_; - my $stash = {}; + my ($class, $config, $c, $path, @params) = @_; + my $stash = $config->{keep_stash} ? { %{ $c->stash } } : {}; croak "subincludes through subrequests require Catalyst::Plugin::SubRequest" unless $c->can('sub_request'); - my $args = ref $params[0] eq 'ARRAY' ? shift @params : []; + my $query = ref $params[-1] eq 'HASH' ? pop @params : {}; - my $dispatcher = $c->dispatcher; - my ($action) = $dispatcher->_invoke_as_path( $c, $path, $args ); + my $action = blessed($path) + ? $path + : $c->dispatcher->get_action_by_path($path); - my $uri = $c->uri_for( $action, $args, @params ); + my $uri = $c->uri_for( $action, @params ); - $c->sub_request( $uri->path, $stash, @params ); + $c->sub_request( $uri->path, $stash, $query ); } =head1 SEE ALSO