2009-08-22 28 views
2

私はここ数日間、PHPTALで遊んでいます。全体的に私は本当にそれが好きです。私が見てきたほとんどの人よりも入り込む方がはるかに簡単でした。私は特に問題が1つあります。PHPTALとネストされたテンプレート。可能?

ここが問題です。私は2つのテンプレートをネストしようとしています。さんはInnerClassこのテンプレートを持っているとしましょう:

<div>Hello World!</div> 

OuterClassは、次のテンプレートがあります。

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

InnerClassも本質的themplate()メソッドを実行しますし、コンテンツを返す呼び出してレンダリング()というメソッドを持っています。だから私は外のクラスでこれを行います:

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

私は、その後、OuterClassの内容を表示します。問題は、内部クラスのレンダリングされたHTMLがエスケープされ、実際のタグの代わりに ">"と "<"が表示されることです。 myVarはコンテンツが表示される前に完全にエスケープされているようです。

このアプローチは機能しないので、PHPTALテンプレートをネストする最も良い方法は何ですか?私はそれが可能であると仮定し、それはちょうど私の最後の知識が不足しているので、どんな入力も感謝します。あなたは、テンプレート内の任意のマークアップを挿入しstructureキーワードを使用したい場合は

答えて

5

:あなたは別の内の1つのPHPTALテンプレートを埋め込みたい場合は

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

しかし、その後、macrosを使用します。

マクロを。 XHTML:

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

page.xhtml:

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

これは私が探していたものです。どうやら私はPHPTALのドキュメントでそれほど遠くにはいません。ありがとう! –

関連する問題