sub template {
my ( $self, $r ) = @_;
-
unless ($self->{tt}) {
my $view_options = $r->config->view_options || {};
$self->{provider} = Template::Provider->new($view_options);
$self->{provider}->include_path([ $self->paths($r) ]);
my $template_file = $r->template;
+
my $ext = $r->config->template_extension;
$template_file .= $ext if defined $ext;
my $output;
- if ($self->{tt}->process($template_file, { $self->vars($r) }, \$output )) {
- $r->{output} = $output;
- return OK;
+ my $processed_ok = eval{$self->{tt}->process($template_file, { $self->vars($r) }, \$output );};
+ if ($processed_ok) {
+ $r->{output} = $output;
+ return OK;
} else {
+ if ($@) {
+ warn "fatal error in template '$template_file' : $@\n";
+ $r->{error} = "fatal error in template '$template_file' : $@";
+ } else {
+ warn "TT error for template '$template_file'\n" . $self->{tt}->error;
$r->{error} = "TT error for template '$template_file'\n" . $self->{tt}->error;
- return ERROR;
+ }
+ return ERROR;
}
}