# add something like the following to your main application module
sub message : Global {
- my ($self, $c) = @_;
- $c->stash->{ template } = 'message.tt2';
- $c->stash->{ message } = $c->req->param('message') || 'Hello World';
+ my ( $self, $c ) = @_;
+ $c->stash->{template} = 'message.tt2';
+ $c->stash->{message} = $c->req->param('message') || 'Hello World';
}
sub default : Private {
- my ($self, $c) = @_;
- $c->stash->{ template } = 'welcome.tt2';
+ my ( $self, $c ) = @_;
+ $c->stash->{template} = 'welcome.tt2';
}
sub end : Private {
- my ($self, $c) = @_;
+ my ( $self, $c ) = @_;
$c->forward('MyApp::V::TT');
}
use strict;
use base 'Catalyst::View::TT';
-my $root = [% app %]->config->root;
+my $root = [% app %]->config->{root};
__PACKAGE__->config({
CATALYST_VAR => 'Catalyst',
INCLUDE_PATH => [ "$root/templates/src", "$root/templates/lib" ],
PRE_PROCESS => 'config/main',
WRAPPER => 'site/wrapper',
- ERROR => 'error.tt2'
+ ERROR => 'error.tt2',
+ TIMER => 0
});
=head1 NAME
__site_wrapper__
[% TAGS star -%]
[% IF template.name.match('\.(css|js|txt)');
- debug("passing page through as text: $template.name");
+ debug("Passing page through as text: $template.name");
content;
ELSE;
- debug("applying HTML page layout wrappers to $template.name\n");
+ debug("Applying HTML page layout wrappers to $template.name\n");
content WRAPPER site/html + site/layout;
END;
-%]
# 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);