croak "subincludes through subrequests require Catalyst::Plugin::SubRequest"
unless $c->can('sub_request');
- my $args = ref $params[0] eq 'ARRAY' ? shift @params : [];
+ 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 $uri = $c->uri_for( $action, $args, @params );
- $c->sub_request( $uri->path, $stash, @params );
+ $c->sub_request( $uri->path, $stash, $query );
}
=head1 SEE ALSO
croak "subincludes through visit() require Catalyst version 5.71000 or newer"
unless $c->can('visit');
-
- $c->log->debug("generate subinclude: $path @params");
{
local $c->{stash} = {};
local $c->response->{body};
- $c->visit( $path, ( ref $params[0] eq 'ARRAY' ? shift @params : () ) );
+ my $captures = ref $params[0] eq 'ARRAY' ? shift @params : [];
+ $c->visit( $path, \@params, $captures );
return $c->response->{body};
}
sub capture : Chained('base') PathPart('') CaptureArgs(1) {
my ( $self, $c, $arg ) = @_;
$c->log->debug("Capture: $arg");
- $c->stash->{additional} = "Arg: $arg";
+ $c->stash->{additional} = "Capture Arg: $arg";
}
sub time_args : Chained('capture') PathPart('time') Args(0) {
$c->stash->{template} = 'time_include.tt';
}
+sub time_args_with_args : Chained('capture') PathPart('time') Args(1) {
+ my ( $self, $c, $arg ) = @_;
+ my $params = $c->req->params;
+
+ $c->stash->{current_time} = localtime();
+
+ my $additional = $c->stash->{additional};
+ for my $key (keys %$params) {
+ $additional .= " | $key = $params->{$key} | "
+ }
+
+ $additional .= " Action Arg: $arg ";
+
+ $c->stash->{additional} = $additional;
+
+ $c->stash->{template} = 'time_include.tt';
+}
+
+sub time_args_without_capture : Chained('base') PathPart('time') Args(1) {
+ my ( $self, $c, $arg ) = @_;
+ my $params = $c->req->params;
+
+ $c->stash->{current_time} = localtime();
+
+ my $additional = '';
+ for my $key (keys %$params) {
+ $additional .= " | $key = $params->{$key} | "
+ }
+
+ $additional .= " Action Arg: $arg ";
+
+ $c->stash->{additional} = $additional;
+
+ $c->stash->{template} = 'time_include.tt';
+}
+
sub end : ActionClass('RenderView') {}
1;
[% subinclude_using('ESI', '/time_include', { 'plugin' => 'ESI'} ) %]<br/>
<br/><br/>
-[% subinclude_using('SubRequest', '/time_args', ['test'], { 'baz' => 'quux' }) %]<br/>
+
+
+Test CaptureArgs and Args interaction (SubRequest):<br/><br/>
+
+[% subinclude_using('SubRequest', '/time_args_with_args', ['capture_argtest'], 'regular_arg', { query_arg => 'val' } ) %]<br/>
+(using: [% c.uri_for( c.controller.action_for('time_args_with_args'), ['capture_argtest'], 'regular_arg', { query_arg => 'val' } ) %])<br/>
+<br/>
+
+[% subinclude_using('SubRequest', '/time_args_without_capture', 'regular_arg', { query_arg => 'val' }) %]<br/>
+(using: [% c.uri_for( c.controller.action_for('time_args_without_capture'), 'regular_arg', { query_arg => 'val' } ) %])<br/>
+
+<br/><br/>
+
+Test CaptureArgs and Args interaction (Visit):<br/><br/>
+
+[% subinclude_using('Visit', '/time_args_with_args', ['capture_argtest'], 'regular_arg', { query_arg => 'val' } ) %]<br/>
+(using: [% c.uri_for( c.controller.action_for('time_args_with_args'), ['capture_argtest'], 'regular_arg', { query_arg => 'val' } ) %])<br/>
+<br/>
+
+[% subinclude_using('Visit', '/time_args_without_capture', 'regular_arg', { query_arg => 'val' }) %]<br/>
+(using: [% c.uri_for( c.controller.action_for('time_args_without_capture'), 'regular_arg', { query_arg => 'val' } ) %])<br/>
+
+<br/><br/>
+
+Test CaptureArgs and Args interaction (ESI):<br/><br/>
+
+[% subinclude_using('ESI', '/time_args_with_args', ['capture_argtest'], 'regular_arg', { query_arg => 'val' } ) %]<br/>
+(using: [% c.uri_for( c.controller.action_for('time_args_with_args'), ['capture_argtest'], 'regular_arg', { query_arg => 'val' } ) %])<br/>
+<br/>
+
+[% subinclude_using('ESI', '/time_args_without_capture', 'regular_arg', { query_arg => 'val' }) %]<br/>
+(using: [% c.uri_for( c.controller.action_for('time_args_without_capture'), 'regular_arg', { query_arg => 'val' } ) %])<br/>