PHPTAL和嵌套模板。可能?

时间:2009-08-22 23:25:47

标签: php templates template-tal phptal

过去几天我一直在玩PHPTAL。总的来说我非常喜欢它。比我调查的其他大多数人都要容易得多。不过,我遇到了一个特殊的问题。

这是问题所在。我试图嵌套两个模板。假设InnerClass有这个模板:

<div>Hello World!</div>

OuterClass有以下模板:

<div tal:content="myVar">This text should be replaced with the HTML above.</div>

InnerClass还有一个名为render()的方法,它实质上调用了themplate的execute()方法并返回内容。所以我在外层做这个:

$template->myVar = $innerClassObject->render();

然后,我显示OuterClass的内容。问题是内部类的呈现HTML被转义,我看到“&gt;”和“&lt;”而不是实际的标签。似乎myVar在显示内容之前已完全转义。

由于这种方法不起作用,嵌套PHPTAL模板的最佳方法是什么?我认为这是可能的,而且我的结果只是缺乏知识,所以任何意见都值得赞赏。

1 个答案:

答案 0 :(得分:5)

如果要在模板中插入任意标记,请使用structure关键字:

<div tal:content="structure variable_that_contains_html"/>

但是如果你想在另一个模板中嵌入一个PHPTAL模板,那么使用macros

macros.xhtml:

<div metal:define-macro="greeting">Hello World!</div>

page.xhtml:

<body><tal:block metal:use-macro="macros.xhtml/greeting"/></body>