開発者ブログ
symfony 1.3 で Symfony Templating を試してみた
- 2009-09-21 (月)
- 開発者ブログ
開発部の海老原です。
本日、 Symfony Components に Symfony Templating が追加されました。
Symfony Components というのは Symfony 2 の構成要素となるライブラリ群のことですが、これらのライブラリは Symfony 2 とは関係なく独立して使用することができます。公開当初からドキュメントが完全に揃っていたり、ユニットテストのカバレッジが 100 % と謳われているなど、 symfony 以外で利用する場合でも魅力的なのではないでしょうか。
個人的にこのコンポーネントには Symfony2 に関するプレゼンテーション が公開されたときから注目していました。
Symfony Templating はいくつかの機能を備えています。ヘルパーはもちろん、テンプレートの継承や、ファイルだけでなくデータベース、メモリからのテンプレートの読み込みを可能にする機構(デフォルトはファイルのみ)、Smarty などの複数のパーサの利用を可能にする機構(デフォルトは PHP のみ)などです。
※かなりおおざっぱに紹介しているので、詳細は ドキュメント を参考にしてください。
管理画面からテンプレートの設定などをおこなう OpenPNE のようなソフトウェアにとって、複数のあるストレージやパーサを利用できるというのは非常に魅力的です。
ということでさっそく symfony 1.3 で Symfony Templating を使ってみたので紹介してみます。
※symfony ユーザとして世界ではじめて Symfony Templating を使う、というのを目指してみましたが、実のところどうだったんでしょう……
試してみたときのコード
試してみたときのコードを GitHub で公開しています。
http://github.com/ebihara/examine-template/tree/master
たいしたものではないですが clone や fork や pull リクエストはご自由にどうぞ!
symfony で使う手順
プロジェクトなどの生成
プロジェクト、アプリケーション、モジュールを生成してください。
Symfony Templating の追加
lib/vendor 以下に Symfony Templating を追加してください。
$ svn co http://svn.symfony-project.com/components/templating/trunk/lib/ lib/vendor/SymfonyTemplating
sfTemplatingComponentView.class.php の追加
lib/view 以下に拙作の sfTemplatingComponentView.class.php を追加してください
$ curl http://github.com/ebihara/examine-template/raw/master/lib/view/sfTemplatingComponentView.class.php > lib/view/sfTemplatingComponentView.class.php
オートローダーの設定
Symfony Templating 内のクラスがオートロードされるようにします。
config/ProjectConfiguration.class.php を以下のように変更してください。
http://github.com/ebihara/examine-template/commit/a2bf730058cd1fc58c1058b3f676b3e4b8422eba
View で Symfony Templating を使うように変更する
http://github.com/ebihara/examine-template/commit/62ce58a3a653ae390374e2f1b882c1e06f1ff992 の通りにやれば OK だと思います。以下にかみ砕いて説明します。
まず、ビュークラスとして拙作の sfTemplatingComponentView を使用するようにモジュールの module.yml に設定を記述します。
default: view_class: sfTemplatingComponent
また、アプリケーションの layout.php を、 Symfony Templating 向けに書き換えます。
layout.php で $sf_content を出力しているところを、 $this->get(‘content’) の返り値を出力するように変更します。
<?php echo $this->get('content') ?>
テンプレートでは、先ほどの layout.php を継承するために記述を加えます。
<?php $this->extend('layout.php') ?>
これで晴れて Symfony Templating が使えるようになるはずです!
sfTemplatingComponentView でいろいろやっているので、アクションからアサインされた変数を使用したり、ヘルパー関数を呼んだり、ということもいままで通りできます。
それからどうするの?
ここまででとりあえず Symfony Templating が手軽に使えるようになったと思います。
Symfony Templating の使用方法については ドキュメント に詳細な解説があるのでそちらを参考にしてください。
また時間があるときに、 Symfony Templating 自体の具体的な活用方法について紹介していければと思います!