2010-11-26 146 views
3

追加我有Smarty的3写了一些模板:Smarty3块包含的模板

  1. 布局页
  2. 索引页
  3. 一个包含网页

layout.tpl:

{block "css"}{/block} 
{block "js"}{/block} 
{block "content"}{/block} 

index.tpl:

{extends "layout.tpl"} 
{block "content"} 
content text 
{include "include.tpl"} 
{/block} 

include.tpl

{block "js" append} 
include some extra js files for this included content 
{/block} 
include text 

但我得到一个编译器异常:

致命错误:未捕获的异常 'SmartyCompilerException' 在模板include.tpl消息“语法错误{块“JS “prepend}太多速记属性

块附加功能在包含的模板中不可用,即使它包含在子模板中?

我认为这会非常有帮助,如果我可以使用块追加这样的方式,或者可能有其他方式来做到这一点?谢谢!

回答

2

Smarty的模板继承在解析器甚至知道您的{include}之前得到处理。因此它不能在包含的模板中处理{block}。也就是说,除非包含的模板本身不扩展另一个模板。