2010-08-27 4 views
5

Je dois afficher différentes formes médicales en fonction de l'état dans lequel se trouve l'utilisateur. Il existe également une forme par défaut que beaucoup d'états partagent. Ces formulaires médicaux sont tous écrits dans Template Toolkit et ils sont inclus dans des modèles plus grands. L'état est disponible sous forme de variable sous une forme normalisée.Puis-je configurer l'héritage de modèle dans un modèle? (Template Toolkit)

Je dois sélectionner le modèle spécifique à l'état, s'il existe, sinon revenir à la valeur par défaut. Comment ferais-je le mieux pour le faire?

INCLUDE_PATH est déjà utilisé pour contrôler la commutation entre les styles de site.

Répondre

6

Quelque chose comme cela devrait faire le travail:

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

Lors de l'exécution 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 
+0

Cela ressemble à ça va marcher, merci! Et je peux l'abstraire dans un modèle d'utilité afin que je puisse faire quelque chose comme '[% INCLUDE" util/bystate "template =" some_form.tt2 "]' – Schwern

Questions connexes