スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Zend_Viewの代わりにSmartyを使う方法

Zend_Viewの何が不満って、いちいち<?phpとか$this->とか書かなければいけないこと。
「PHPを使う理由ってSmartyがあるからだよね」が持論の私としては、Smartyを組み込まざるえない。

まず最初にやっておくことは、Zend_View_Interfaceを実装したクラスを作成することです。
これはZend Frameworkのドキュメントを参考にしてください。とりあえず、UV_View_Smartyというクラス名にしました。

次にフロントコンロローラーのindex.phpに組み込みます。

// 設定読み込み
define("SITE_ENVIRONMENT", "develop");
$config = new Zend_Config_Ini(
"/application/config/application.ini",
SITE_ENVIRONMENT);

// Smartyの設定
$view = new Uv_View_Smarty(null, $config->smarty);
$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view);
$viewRenderer
->setViewBasePathSpec($config->application->basepath)
->setViewScriptPathSpec(':controller/:action.:suffix')
->setViewScriptPathNoControllerSpec(':action.:suffix')
->setViewSuffix('tpl');
Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);


設定ファイルは以下の通りです。

[develop]
smarty.compile_dir = /opt/application/template/compile
smarty.cache_dir = /opt/application/template/cache
smarty.caching = 1
smarty.compile_check = true
smarty.cache_lifetime = 5
smarty.plugin_dir = /opt/application/template/plugin
application.baseurl = /application
application.controller = /opt/application/controllers
application.basepath = /opt/application/views/templates


デフォルトのレンダラーはZend_Viewを使用するため、Smartyを使う独自のViewを使うようにレンダラーの設定を行っています。
setViewBasePathSpecはテンプレートファイルの置き場所を設定しています。
setViewScriptPathSpec, setViewScriptPathNoControllerSpecはZend_Viewと同じようにコンロトーラー名/メソッド名をフォルダー階層に割り当てます。
setViewSuffixはテンプレートファイルの拡張子を設定します。
スポンサーサイト

Tag : zendframework

COMMENTS

COMMENT FORM

TRACKBACK


この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。