2010-08-27 24 views
5

Tôi phải hiển thị các biểu mẫu y tế khác nhau tùy thuộc vào trạng thái của người dùng. Ngoài ra còn có một biểu mẫu mặc định mà nhiều tiểu bang chia sẻ. Các hình thức y tế này đều được viết trong Bộ công cụ mẫu và chúng được bao gồm trong các mẫu lớn hơn. Trạng thái có sẵn dưới dạng biến trong biểu mẫu được chuẩn hóa.Tôi có thể thiết lập kế thừa mẫu bên trong mẫu không? (Template Toolkit)

Tôi cần chọn mẫu nhà nước cụ thể, nếu nó tồn tại, nếu không sẽ quay trở lại mặc định. Làm thế nào tốt nhất tôi nên làm điều này?

INCLUDE_PATH đã được sử dụng để kiểm soát chuyển đổi giữa các kiểu trang web.

Trả lời

6

Something như thế này nên thực hiện công việc:

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

Khi chạy 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

Đó có vẻ như nó sẽ làm việc, cảm ơn! Và tôi có thể tóm tắt nó thành một mẫu tiện ích để tôi có thể làm một cái gì đó như '[% INCLUDE" util/bystate "template =" some_form.tt2 "]' – Schwern