sub generate_subinclude {
my ($class, $c, $path, @params) = @_;
+ my $args = ref $params[0] eq 'ARRAY' ? shift @params : [];
+
my $dispatcher = $c->dispatcher;
- my ($action, $args) = $dispatcher->_invoke_as_path( $c, $path, @params );
+ my ($action) = $dispatcher->_invoke_as_path( $c, $path, $args );
- my $uri = $c->uri_for( $action, $args );
+ my $uri = $c->uri_for( $action, $args, @params );
- return '<!--esi <esi:include src="' . $uri->path . '" /> -->';
+ return '<!--esi <esi:include src="' . $uri->path_query . '" /> -->';
}
=head1 SEE ALSO
croak "subincludes through subrequests require Catalyst::Plugin::SubRequest"
unless $c->can('sub_request');
+
+ my $args = ref $params[0] eq 'ARRAY' ? shift @params : [];
my $dispatcher = $c->dispatcher;
- my ($action, $args) = $dispatcher->_invoke_as_path( $c, $path, @params );
+ my ($action) = $dispatcher->_invoke_as_path( $c, $path, $args );
- my $uri = $c->uri_for( $action, $args );
+ my $uri = $c->uri_for( $action, $args, @params );
$c->sub_request( $uri->path, $stash, @params );
}
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->request->{parameters} =
+ ref $params[-1] eq 'HASH' ? pop @params : {};
+
+ local $c->response->{body};
+
+ $c->visit( $path, ( ref $params[0] eq 'ARRAY' ? shift @params : () ) );
+
+ return $c->response->{body};
+ }
- $c->visit( $path, @params );
- $c->res->{body};
}
=head1 SEE ALSO
sub time_include : Chained('base') PathPart('time') Args(0) {
my ( $self, $c ) = @_;
+ my $params = $c->req->params;
+
+ $c->stash->{current_time} = localtime();
+
+ my $additional = '';
+ for my $key (keys %$params) {
+ $additional .= "| $key = $params->{$key} | "
+ }
+
+ $c->stash->{additional} = $additional;
+
+}
+
+sub capture : Chained('base') PathPart('') CaptureArgs(1) {
+ my ( $self, $c, $arg ) = @_;
+ $c->log->debug("Capture: $arg");
+ $c->stash->{additional} = "Arg: $arg";
+}
+
+sub time_args : Chained('capture') PathPart('time') Args(0) {
+ my ( $self, $c ) = @_;
+ my $params = $c->req->params;
+
$c->stash->{current_time} = localtime();
+
+ my $additional = $c->stash->{additional};
+ for my $key (keys %$params) {
+ $additional .= "| $key = $params->{$key} | "
+ }
+
+ $c->stash->{additional} = $additional;
+
+ $c->stash->{template} = 'time_include.tt';
}
sub end : ActionClass('RenderView') {}
ESI Test, will include /time_include<br/>
-[% subinclude('/time_include') %]
+[% subinclude('/time_include', { 'foo' => 'bar'} ) %]<br/>
+[% subinclude('/time_args', ['test'], { 'baz' => 'quux' }) %]<br/>
-Current time is: [% current_time %]
\ No newline at end of file
+Current time is: [% current_time %] --> [% additional %]