CMS構築を目的にPHPをベースとしたWordPress、CakePHPやPEARなどオープンソースを中心に解説しています

前回、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ほどの機能は備えていないので、この方法は今後重宝しそうです。

このエントリーをはてなブックマークに追加

Reference

Comment

Comment Form

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Monthly Archives

Search