Enjoy, Twig PHP BLT #2 2016.01.13 林 林林 @m_norii
Enjoy, TwigPHP BLT #22016.01.13
林 正紀 @m_norii
About me• 林 正紀 (HAYASHI Masanori)• 1974 年 09 月 12 日生 (41 歳 )• 埼玉生まれ埼玉育ち埼玉ふじみ野在住• 埼玉大学/大学院・数学専攻• 埼玉土着エンジニア• EMTG
• @m_norii• http://norii.hatenablog.com/• https://www.facebook.com/m.norii
http://emtg.co.jp/archives/2975
http://emtg.co.jp/archives/2975
エンジニア募集中 !!
http://emtg.co.jp/recruit
Enjoy, Twig• Include の ignore missing• 条件付き For ループ• slice• Verbatim• template_from_string
Include の ignore missing• 指定テンプレートが無い場合、何もしない( この指定が無い場合はエラーになる )
//foo.html.twig が無い場合はエラー{% include 'foo.html.twig' %}
//foo.html.twig が無い場合は何も出力しない{% include 'foo.html.twig' ignore missing %}
// 複数ファイル指定//foo.html.twig が無い場合 bar.html.twig を表示、それもなければエラー{% include ['foo.html.twig', 'bar.html.twig'] %}
//foo.html.twig が無い場合 bar.html.twig を表示// それもなければ何も出力しない{% include ['foo.html.twig', 'bar.html.twig'] ignore missing %}
条件付き For ループ
• リスト中の特定条件のものだけ処理をする場合に便利• For と if をネストして書くよりもすっき
り書ける<ul> {% for user in users if user.active %} <li>{{user.username}}</li> {% endfor %}</ul>
Slice• 配列に対しては array_slice()
文字列に対しては mb_substr()/substr()として作用する
{% for i in [1, 2, 3, 4, 5]|slice(1, 2) %} ※i = 2 、 3 に対してのみ処理が行われる{% endfor %}
{{ 'Hello'|slice(1, 2) }}{# 出力は「 el 」 #}
Verbatim• Twig で評価される {{ }} 、 {% %} など
を評価せずそのまま表示する• 「 Twig でこう書いてね」を伝えるのに便利
{% verbatim %} 以下のように記述してください。 <pre> {% if date() >= date('2016-01-08 00:00:00') %} 【表示したい内容】 {% endif %} </pre>{% endverbatim %}
template_from_string• 引数を再度 Twig 構文として評価する• いわゆる eval 的なもの
動機
CMS の中でTwig を記述したい
※ 画像はあくまでイメージです。内容は Wordpress とは関係ありません
template_from_string
template_from_string• デフォルトでは有効ではないので、設定が必
要 ( 前スライド後半参照 )• DB に Twig テンプレ文字列を登録して渡す、
みたいなことができる• 用法用量を守って正しく使いましょう• Template_from_string() に渡す文字列に template_from_string() が入っていたら・・・どうなるのか?(試してない)• ユーザ入力に対して使っちゃダメ、絶対!
Enjoy, Twig!!