2010年7月7日水曜日

Twigで自作フィルタ

Twigでは色々なものを自作して組み込むことができるそうで、
フィルタやタグは勿論のこと、何だったら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';
    }
}

ポイントは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 件のコメント:

コメントを投稿

どうかお気軽にコメント頂ければ幸いです。