# render view from lib/MyApp.pm or lib/MyApp::C::SomeController.pm
sub message : Global {
- my ($self, $c) = @_;
- $c->stash->{ template } = 'message.tt2';
- $c->stash->{ message } = 'Hello World!';
+ my ( $self, $c ) = @_;
+ $c->stash->{template} = 'message.tt2';
+ $c->stash->{message} = 'Hello World!';
$c->forward('MyApp::V::TT');
}
# In MyApp or MyApp::Controller::SomeController
sub end : Private {
- my($self, $c) = @_;
+ my( $self, $c ) = @_;
$c->forward('MyApp::V::TT');
}
return $self->NEXT::new(@_);
}
-The final, and perhaps most direct way, is to define a C<template>
+The final, and perhaps most direct way, is to define a class
item in your main application configuration, again by calling the
-uniquitous C<config()> method. The items in the C<template> hash are
+uniquitous C<config()> method. The items in the class hash are
added to those already defined by the above two methods. This happens
in the base class new() method (which is one reason why you must
remember to call it via C<NEXT> if you redefine the C<new()> method in a
item in the stash.
sub message : Global {
- my ($self, $c) = @_;
- $c->stash->{ template } = 'message.tt2';
+ my ( $self, $c ) = @_;
+ $c->stash->{template} = 'message.tt2';
$c->forward('MyApp::V::TT');
}
-If a C<template> item isn't defined, then it instead uses the
+If a class item isn't defined, then it instead uses the
current match, as returned by C<$c-E<gt>match>. In the above
example, this would be C<message>.
sub message : Global {
sub default : Private {
- my ($self, $c) = @_;
- $c->stash->{ template } = 'message.tt2';
- $c->stash->{ message } = 'Hello World!';
+ my ( $self, $c ) = @_;
+ $c->stash->{template} = 'message.tt2';
+ $c->stash->{message} = 'Hello World!';
$c->forward('MyApp::V::TT');
}
my $root = $c->config->{root};
- my %config = (
+ my $config = {
EVAL_PERL => 0,
INCLUDE_PATH => [ $root, "$root/base" ],
%{ $class->config },
%{$arguments}
- );
+ };
# if we're debugging and/or the TIMER option is set, then we install
# Template::Timer as a custom CONTEXT object, but only if we haven't
# already got a custom CONTEXT defined
- if ( $config{TIMER} || ( $c->debug() && !exists $config{TIMER} ) ) {
- if ( $config{CONTEXT} ) {
+ if ( $config->{TIMER} || ( $c->debug() && !exists $config->{TIMER} ) ) {
+ if ( $config->{CONTEXT} ) {
$c->log->error(
'Cannot use Template::Timer - a TT CONFIG is already defined');
}
else {
- $config{CONTEXT} = Template::Timer->new( \%config );
+ $config->{CONTEXT} = Template::Timer->new(%$config);
}
}
- if ( $c->debug && $config{DUMP_CONFIG} ) {
+ if ( $c->debug && $config->{DUMP_CONFIG} ) {
use Data::Dumper;
- $c->log->debug( "TT Config: ", Dumper( \%config ) );
+ $c->log->debug( "TT Config: ", Dumper($config) );
}
return $class->NEXT::new(
$c,
{
- template => Template->new( \%config ) || do {
+ template => Template->new($config) || do {
my $error = Template->error();
$c->log->error($error);
$c->error($error);
L<Catalyst>, L<Catalyst::Helper::View::TT>,
L<Catalyst::Helper::View::TTSite>, L<Template::Manual>
-=head1 AUTHOR
+=head1 AUTHORS
Sebastian Riedel, C<sri@cpan.org>
+
Marcus Ramberg, C<mramberg@cpan.org>
+
Jesse Sheidlower, C<jester@panix.com>
+
Andy Wardley, C<abw@cpan.org>
=head1 COPYRIGHT