Можно ли настроить наследование шаблона внутри шаблона? (Template Toolkit)

Мне нужно отобразить различные медицинские формы, в зависимости от того, в каком состоянии находится пользователь. Существует также форма по умолчанию, которая используется во многих штатах. Все эти медицинские формы написаны в Template Toolkit и включены в более крупные шаблоны. Состояние доступно как переменная в нормализованной форме.

Мне нужно выбрать шаблон для конкретного штата, если он существует, в противном случае вернуться к стандартному. Как мне лучше всего это сделать?

INCLUDE_PATH уже используется для управления переключением между стилями сайта.

1 ответ

Решение

Нечто подобное должно сделать работу:

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";

При беге 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
Другие вопросы по тегам