PHPTAL и вложенные шаблоны. Возможный? - PullRequest
2 голосов
/ 23 августа 2009

Я играл с PHPTAL последние пару дней. В целом мне это очень нравится. Это было намного проще, чем большинство других, на которых я смотрел. У меня есть одна конкретная проблема, однако.

Вот проблема. Я пытаюсь вложить два шаблона. Допустим, InnerClass имеет этот шаблон:

<div>Hello World!</div>

OuterClass имеет следующий шаблон:

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

InnerClass также имеет метод render (), который по существу вызывает метод execute () themplate и возвращает содержимое. Поэтому я делаю это во внешнем классе:

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

Затем я отображаю содержимое OuterClass. Проблема заключается в том, что отображаемый HTML-код внутреннего класса выходит за пределы экрана, и я вижу «>» и «<» вместо реальных тегов. Похоже, что myVar полностью экранирован до отображения его содержимого. </p>

Поскольку этот подход не работает, каков наилучший способ вложения шаблонов PHPTAL? Я предполагаю, что это возможно, и это просто нехватка знаний с моей стороны, поэтому любой вклад приветствуется.

1 Ответ

5 голосов
/ 23 августа 2009

Если вы хотите вставить произвольную разметку в шаблон, используйте ключевое слово 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>
...