從我的理解,Template::Alloy::TT應該可以與Template Toolkit互換,但我有一些問題試圖與另一個互換。下面是我的視圖文件的配置:perl模板::合金與催化劑不能正常顯示
package maypp::View::HTML;
use strict;
use base 'Catalyst::View::TT';
__PACKAGE__->config({
INCLUDE_PATH => [
myapp->path_to('root', 'src'),
myapp->path_to('root', 'lib'),
],
PRE_PROCESS => 'config/main',
WRAPPER => 'site/wrapper',
ERROR => 'error.html',
TIMER => 0,
render_die => 1,
COMPILE_DIR => '/tmp/compiled_templates', #caches compiled templates
STAT_TTL => 1, #how long to cache templates before seeing if there are any changes
TEMPLATE_EXTENSION => '.html',
});
我認爲改變Catalyst::View::TT
到Catalyst::View::TT::Alloy
將所有我不得不這樣做(這之前一直是過程對我來說)開始使用Template::Alloy
。然而,每當我改變這一點,我沒有得到正確的輸出。下面是我的包裝文件:
[% IF template.name.match('\.(css|js|txt)');
debug("Passing page through as text: $template.name");
content;
ELSE;
debug("Applying HTML page layout wrappers to $template.name\n");
content WRAPPER "$host/site/html" + "$host/site/layout";
END;
-%]
site/html
將被處理,但site/layout
不進入site/html
像它的時候我只是用普通Template Toolkit
(通常site/layout
進入[% content %]
在site/html
)。有什麼我在這裏做錯了嗎?我想使用Template::Alloy
來提高速度,但只有在我能使其工作的情況下:)感謝您的幫助!
有趣的是'內容WRAPPER /網站/ html +網站/佈局;'工作正常,但是我需要'$主機'根據域顯示不同的模板。通過在'$ host/site/html.tt'中放置第二個'WRAPPER'指令,你的意思是讓'[%content WRAPPER'$ host/site/layout「%]'代替'[%content% ]「就像我現在擁有? – srchulo
那麼在這種情況下,這可能是'$ host'的插值問題?嘗試'host_'/ site/html'',看看是否有任何區別。 – RET
我試過了,但是它給了我這個錯誤:'文件錯誤 - /站點/佈局絕對路徑不允許(設置ABSOLUTE選項)' – srchulo