2010年2月9日火曜日

Zend_View_Helperを自作する

Zend_View_Helperを自作する必要があったので、とりあえずメモ。

ヘルパーはZend_View_Helper_InterfaceかZend_View_Helper_Abstractを継承して作成する。

クラス名には、View_Helperを入れておいたほうがよいと、リファレンスに書いてあった。
クラスのメソッドとして、必ずクラス名からプレフィックスを除いた名称と同じ名前のメソッドを用意する必要がある。
※クラス名ははじめが大文字、メソッド名ははじめは小文字で。

コード例) 引数を大文字にするだけの簡単なHelperクラス
class My_View_Helper_StrUpper extends Zend_View_Helper_Abstract {
    public function strUpper($val){
        return strtoupper($val);
    }
}

配置先は、とりあえず、views/helpers配下あたりに置いておく。
 上のクラスの場合は、以下のようになる。
配置例)
views/helpers/StrUpper.php



このままではZend_Viewはヘルパークラスを認識できず、使えないので、独自のヘルパークラスを探してもらうようにZend_Viewに探し先を登録する必要がある。
パスを追加するには、Zend_ViewのaddHelperPath()を使う。
第一引数に、パス名(絶対パス)、第二引数にクラス名のプレフィックスを指定する。
コード例) コントローラ内でパスを通すときの書き方
$this->view->addHelperPath(APPLICATION_PATH.'/views/helpers','My_View_Helper');

※ヘルパーのクラス名をZend_View_Helper_XXXXとしておくと、ヘルパーのパス追加は必要がない。ただ、Zend_xxxとつけられるのはZendだけなので、めんどくさがらずに設定をしておくこと。

上記を行うことで、テンプレートにおいて、独自ヘルパーを利用できるようになる。

 コード例)テンプレート内での記述
<div>
<?php echo $this->strUpper("aa"); ?>
</div>

ViewHelperは以外に便利。

0 件のコメント: