2009-08-22 12 views
2

J'ai joué avec PHPTAL ces derniers jours. Globalement, j'aime vraiment ça. Il a été beaucoup plus facile d'entrer que la plupart des autres que j'ai examinés. J'ai cependant un problème particulier.Modèles PHPTAL et imbriqués. Possible?

Voici le problème. J'essaye d'imbriquer deux modèles. Disons classe interne a ce modèle:

<div>Hello World!</div> 

OuterClass a le modèle suivant: méthode

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

classe interne a également une méthode appelée render(), qui appelle essentiellement est themplate execute() et renvoie le contenu. Donc, je le fais dans la classe externe:

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

Je, puis, afficher le contenu de l'OuterClass. Le problème est que le HTML rendu de la classe interne est échappé et je vois ">" et "<" au lieu de balises réelles. Il semble que myVar soit complètement échappé avant que son contenu ne soit affiché.

Étant donné que cette approche ne fonctionne pas, quelle est la meilleure façon d'imbriquer des modèles PHPTAL? Je suppose que c'est possible et c'est juste le manque de connaissances de ma part, donc toute contribution est appréciée.

Répondre

5

Si vous souhaitez insérer un balisage arbitraire dans un modèle, puis utilisez structure mot-clé:

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

mais si vous souhaitez intégrer un modèle de PHPTAL dans un autre, puis utilisez macros:

macros. xhtml:

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

page.xhtml:

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

Super, c'est ce que je cherchais. Apparemment, je n'ai jamais été aussi loin dans la documentation de PHPTAL. Merci! –

Questions connexes