Zend FrameworkとSmartyを連携させる(2)
前回、Zend FrameworkにテンプレートエンジンSmartyを組み込む方法を紹介しました。
Zend FrameworkとSmartyを連携させる(1)
今回はその環境での動作確認です。
まずはフレームワーク上でSmartyが動作しているかの確認です。
「/application/controllers/TestController.php」に以下を実装します。
require_once 'Zend/Controller/Action.php'; class TestController extends Zend_Controller_Action{ public function indexAction(){ } public function helloAction(){ $this->view->word = 'Hello World!'; } }
次にテンプレート「/application/smarty/templates/test/hello.html」を用意します。
{$word}
これで、テスト環境「http://(てすと環境)/test/hello」にブラウザでアクセスすると
Hello World!
と表示されます。
つまりはSmartyのテンプレートが機能している間は、Zend Frameworkのビューワー「/application/views/scripts」は不要になるんですね。
次に設定ファイルを読み込んでみます。
設定ファイル「/application/smarty/configs/common.txt」を用意します。
HELLO_WORLD="はろーわーるど!"
「/application/controllers/TestController.php」を書き換えます。
require_once 'Zend/Controller/Action.php'; class TestController extends Zend_Controller_Action{ public function indexAction(){ } public function helloAction(){ $smarty = $this->view->getEngine(); $smarty->config_load('common.txt'); $config = $smarty->get_config_vars(); $this->view->word = $config["HELLO_WORLD"]; } }
ブラウザで確認すると以下のように表示されます。
はろーわーるど!
設定ファイルの読み込みも問題なしですね。
ラッパークラスに設定ファイルを読み込む関数を用意すると便利ですね。後で考えてみます。
テンプレートの共通化はどうでしょうか。
「/application/smarty/templates/header.html」を用意します。
これはヘッダー<br />
「/application/smarty/templates/test/hello.html」を以下のように書き換えます。
{include file='header.html'} {$word}
「include」はSmartyの機能で、他のテンプレートを読み込みます。
出力結果は以下のとおりです。
これはヘッダー はろーわーるど!
基本的なところは確認できました。Smartyの機能は一通り問題なく利用できそうです。
Zend Framework単体ではテンプレート共通化など、Smartyほどの機能は備えていないので、この方法は今後重宝しそうです。
コメントする