XHTMLと親和性の高いテンプレートエンジン「PHPTAL」を使っていました。
慣れてくると共にPHPTALの機能を使い出し、とうとう使い方がTwigっぽくなってきたので、いっそのこと移行してしまえと思ったのはいいものの・・・
似てたり違うところがあったりするので、慣れるまでの間のため、互いの対応をまとめました。
Twigで新しく出てきた概念
テンプレートファイル継承
{% extends 'filename' %}
http://twig.sensiolabs.org/doc/tags/extends.html
同名blockの継承
{% use 'filename' %}
http://twig.sensiolabs.org/doc/tags/use.html
ファイル読み込み割りいれ
{% include 'filename' %}
http://twig.sensiolabs.org/doc/tags/include.html
対応するものもしくは、それに近いもの
METAL
define-macro
{% macro 'macroname'(arg1, arg2) %}
...
{% endmacro %}
use-macro
{% import 'filename' as ailias %}
{{ ailias.macroname(arg1, arg2..) }}
define-slot
{% block 'blockname' %}
...
{% endblock %}
fill-slot
{% embed 'filename' %}
{% block 'blockname' %} filled contents {% endblock %}
{% endembed %}
TAL
block
{% block %}
...
{% endblock %}
repeat
{% for row in rows %}
...
{% endfor %}
define
{% set var = 'value' %}
condition
{% if boolean %}
...
{% elseif boolean %}
...
{% else %}
...
{% endif %}
TALES
exists:
{% if var is defined %}
...
{% endif %}
true:
{% if var is not empty %}
...
{% endif %}
structure
{{ var|raw }}
default
{{ var|default('defaultValue') }}
php:
これが必用な時は大抵FilterもしくはFunctionなので、Twig_SimpleFilterなどのTwig_Simple*系クラスが用意されています。
これを利用してcallableで手軽に追加しましょう。
方法はこちらを参考に:
http://twig.sensiolabs.org/doc/advanced.html