開発者ブログ

symfony 1.3 で Symfony Templating を試してみた

開発部の海老原です。

本日、 Symfony ComponentsSymfony 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 自体の具体的な活用方法について紹介していければと思います!

OpenPNE�~�蓈���񋟃T�[�r�X�̂��m�点

  • ��K�̓z�X�e�B���O
  • �Z�p�T�|�[�g
  • �J�X�^�}�C�Y
  • OpenPNE Manager
  • ���q���܃T�|�[�g

ページの先頭に戻る