その出自から、symphonyというフレームワークと
相性がいいとは思うのですが、
別にsymphonyでなくとも使いたいなあと思い、
最近、少し研究しています。
サンプルを見ていると、
変数をassignしてrenderする方法はたくさん見つかりますが、
クラスのインスタンスをassignして
テンプレート側でクラスメソッドを実行するのって
あまりサンプルを見かけることがなかったのですが、
直感的に出来るハズだと思い、やってみました。
呼ばれるクラス。
class vivatest
{
public function find($param = 0)
{
echo "this is vivatest's find method. ( $param ) <br />";
}
}
{
public function find($param = 0)
{
echo "this is vivatest's find method. ( $param ) <br />";
}
}
クラスのインスタンスをテンプレートに埋め込む処理。
$testcls = new vivatest();
(・・色々、省略。詳しくは、Twigのサイトでサンプル拾ってください・・)
$template = $twig->loadTemplate('samplehtml');
echo $template->render(array('vivatest' => $testcls));
(・・色々、省略。詳しくは、Twigのサイトでサンプル拾ってください・・)
$template = $twig->loadTemplate('samplehtml');
echo $template->render(array('vivatest' => $testcls));
テンプレート。
<html>
<title>title</title>
</html>
<body>
<p>{{ vivatest.find() }} {{ vivatest.find(1) }} {{ vivatest.find('x') }}</p>
</body>
<title>title</title>
</html>
<body>
<p>{{ vivatest.find() }} {{ vivatest.find(1) }} {{ vivatest.find('x') }}</p>
</body>
実行結果。
this is vivatest's find method. ( 0 )
this is vivatest's find method. ( 1 )
this is vivatest's find method. ( x )
this is vivatest's find method. ( 1 )
this is vivatest's find method. ( x )
・・・別に、何のことはなかったですね。
直感的に「こうするんじゃないかな?」と思った方法で、
ちゃんと実行することが出来ました。
0 件のコメント:
コメントを投稿
どうかお気軽にコメント頂ければ幸いです。