2009-08-22 7 views
2

Ich habe in den letzten Tagen mit PHPTAL gespielt. Insgesamt mag ich es wirklich. Es war viel einfacher, in sie hineinzukommen als die meisten anderen, die ich untersucht habe. Ich habe jedoch ein besonderes Problem.PHPTAL und verschachtelte Vorlagen. Möglich?

Hier ist das Problem. Ich versuche zwei Vorlagen zu verschachteln. Lassen Sie uns sagen Innerclass diese Vorlage hat:

<div>Hello World!</div> 

OuterClass hat die folgende Vorlage:

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

Innerclass hat auch eine Methode() aufgerufen machen, die im Wesentlichen ruft themplate auszuführen ist() -Methode und gibt den Inhalt. Also mache ich das in der äußeren Klasse:

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

Ich zeige dann den Inhalt der OuterClass an. Das Problem ist, dass das gerenderte HTML der inneren Klasse mit Escapezeichen versehen ist und ich anstelle der eigentlichen Tags ">" und "<" sehe. Es scheint, dass myVar vollständig ausgeblendet ist, bevor der Inhalt angezeigt wird.

Da dieser Ansatz nicht funktioniert, was ist der beste Weg, um PHPTAL Vorlagen zu nisten? Ich nehme an, es ist möglich und es ist nur ein Mangel an Wissen an meinem Ende, so dass jede Eingabe geschätzt wird.

Antwort

5

Wenn Sie beliebige Markup in einer Vorlage einfügen möchten, verwenden Sie dann structure Stichwort:

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

aber wenn Sie ein PHPTAL Vorlage in eine andere einbetten möchten, dann macros verwenden:

Makros. xhtml:

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

page.xhtml:

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

Großartig, das ist, was ich gesucht habe. Anscheinend bin ich in der PHPTAL-Dokumentation nie so weit gekommen. Vielen Dank! –