2010-08-27 5 views
5

Ich muss verschiedene medizinische Formulare anzeigen, je nachdem, in welchem ​​Status der Benutzer ist. Es gibt auch ein Standardformular, das viele der Staaten teilen. Diese medizinischen Formulare sind alle in Template Toolkit geschrieben und in größeren Vorlagen enthalten. Der Status ist als eine Variable in einer normalisierten Form verfügbar.Kann ich die Template-Vererbung in einer Vorlage einrichten? (Template Toolkit)

Ich muss die state-specific Vorlage auswählen, wenn es existiert, sonst auf den Standard zurückfallen. Wie sollte ich das am besten machen?

INCLUDE_PATH wird bereits verwendet, um das Wechseln zwischen Site-Stilen zu steuern.

Antwort

6

So etwas sollte die Arbeit machen:

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

Wenn t.pl ausgeführt wird:

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

, das wie es aussieht, wird funktionieren, danke! Und ich kann es in eine Utility-Vorlage abstrahieren, so dass ich etwas wie '[% INCLUDE' util/bystate "template =" some_form.tt2 "]' 'machen kann – Schwern