フィルタやタグは勿論のこと、何だったらparserとかも自作して
組み込むことができそうです。
今回、Twigのフィルタを自作して組み込んでみたので、
その方法について、軽く整理しておきます。
今回作成するのは、nl2br(改行コードをbrタグに変換)です。
信じられませんが、意外とこれが無かったりします。
1.フィルタ本体
class Sample_Extension extends Twig_Extension
{
public function getFilters()
{
return array('nl2br' => new Twig_Filter_Method($this, 'nl2br'));
}
public function nl2br($value, $sep = '<br />')
{
return str_replace("\n", $sep."\n", $value);
}
public function getName()
{
return 'sample';
}
}
{
public function getFilters()
{
return array('nl2br' => new Twig_Filter_Method($this, 'nl2br'));
}
public function nl2br($value, $sep = '<br />')
{
return str_replace("\n", $sep."\n", $value);
}
public function getName()
{
return 'sample';
}
}
ポイントは2点。
■Twig_Extensionを継承して作り、getName()を実装
■フィルタとして登録する機能をgetFileters()で返す
(このとき、PHP関数なのかクラスメソッドなのか
インスタンスメソッドなのかで実装方法が異なりますので、
詳しくはドキュメントを読みましょう。)
※ここでは、スゲー適当なクラス名で作成し、
スゲー適当なファイル名で保存しました。
※Twig標準のautoloaderに読み込ませる場合には、
真面目に命名し、真面目なファイル名で保存し、
真面目なフォルダに保存しておきましょう。
Twig/Extension/Core.phpや
Twig/Autoloader.phpなど
のソースを読めば、すぐに理解できると思います。
2.Twigへの組み込み
$twig->addExtension(new Sample_Extension());
上記1で作成したフィルタを、Twig_EnviromentにaddExtensionで追加します。
・・・以上です。
簡単でしたね。
0 件のコメント:
コメントを投稿
どうかお気軽にコメント頂ければ幸いです。