Могу ли я настроить наследование шаблона внутри шаблона?(Template Toolkit) - PullRequest
5 голосов
/ 27 августа 2010

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

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

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

1 Ответ

6 голосов
/ 27 августа 2010

Примерно так должно работать:

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
...