3

我有一些用 Smarty 3 编写的模板:

  1. 布局页面
  2. 索引页
  3. 包含页面

布局.tpl:

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

索引.tpl:

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

包括.tpl

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

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

致命错误:未捕获的异常 'SmartyCompilerException' 带有消息 'Syntax Error in template include.tpl {block "js" prepend} 太多速记属性

块追加是否在包含的模板中不可用,即使它包含在子模板中?

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

4

2 回答 2

2

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

于 2011-06-06T21:26:30.387 回答
0

“too many shorthand attributes”是指语句中缺少属性名称:

{block "js" append}

Smarty 感到困惑,因为不再清楚每个属性指的是什么。

相反,用简写版本 name="js" 替换“js”的简写属性,你应该没问题:

{block name="js" append}
于 2021-09-27T09:43:08.150 回答