Zend Framework でviewからブラウザ出力を行う直前に、文字列置換などを行うことが可能な output filter の使い方を以下に記載します。
手法
-
フィルターファイル(実行ファイル)を用意する
class名の命名規約として、「名前空間_フィルター名」 という形式を取る。
またフィルターのファイル名は、フィルター名.php という形式を取る。- /application/views/filters/Sjis.php
-
PHP:
-
class Revulo_View_Filter_Sjis
-
{
-
public function filter($value)
-
{
-
}
-
}
-
上記の場合、Revulo_View_Filter という名前空間に Sjis というフィルター名を表す。
-
設定ファイルに Zend_View_Filter の設定を追記する
ZF_TOOL を使ってプロジェクトを生成している場合は、フロントコントローラーに Zend_Application が使われています。この場合、設定INIファイルに View_Filterの設定を追記するだけで動作します。
Zend_Applicationが使われて無い場合は、Bootstrapへ設定を記述すれば動作させる事が出来ます。INIファイルで設定する場合
resources.view.filterPath の直後、Revulo_View_Filter と書かれた箇所には、フィルター群の名前空間を指定する。
resources.view.filter は配列形式で複数の登録が可能で、フィルター名を指定する。- /application/config/application.ini
-
CODE:
-
#filter ファイルを格納するディレクトリのパス
-
resources.view.filterPath.Revulo_View_Filter = APPLICATION_PATH "/views/filters"
-
#filter の登録
-
resources.view.filter[] = "Sjis"
-
Bootstrapでする場合
- /application/bootstrap.php
-
PHP:
-
protected function _initViewset()
-
{
-
// ビューを初期化します
-
$view = new Zend_View();
-
-
$view->addFilterPath( APPLICATION_PATH."/views/filters", 'Revulo_View_Filter');
-
$view->addFilter('Sjis');
-
-
// ViewRenderer に追加します
-
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
-
'ViewRenderer'
-
);
-
$viewRenderer->setView( $view);
-
-
// ブートストラップで保存できるように返します
-
return $view;
-
}
-