Can I customize template inheritance inside a template? (Set of patterns)

I need to display various medical forms according to which the user is located. There is also a default form that many states share. These medical forms are written in the Template Toolkit and they are included in larger templates. The state is available as a variable in normalized form.

I need to select a state template, if one exists, otherwise it will revert to default. How am I best to do this?

INCLUDE_PATH already used to control switching between site styles.

+5
source share
1 answer

Something like this should accomplish this task:

main.tt:

This is a main template [% GET state %]
[% SET iname = state _ ".tt" %]
[% TRY %]
[% INCLUDE "$iname" %]
[% CATCH %]
[% INCLUDE default.tt %]
[% END %]
End of main template

default.tt:

This is default template

s1.tt:

This is template for state s1.

t.pl:

#! /usr/bin/perl
use 5.006;
use strict;
use warnings;

use Template;
my $tt = Template->new();
$tt->process("main.tt", { state => "s1" })
  || die $tt->error, "\n";
print "---------\n";
$tt->process("main.tt", { state => "unknown" })
  || die $tt->error, "\n";

At startup t.pl:

This is a main template s1
This is template for state s1.
End of main template
---------
This is a main template unknown
This is default template
End of main template
+6
source

All Articles