SlideShare a Scribd company logo
Enjoy, Twig
PHP BLT #2
2016.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!!

More Related Content

PPTX
Symfony meetup-7
PPTX
Phpstudy98
PDF
フォロワーから友利奈緒を探す
PDF
「これはヤフオク!に機械学習を導入する男たちの戦いの物語である」#yjdsw4
PDF
ヤフオク!と機械学習#yjdsw1
PPTX
Glt vol49
PPTX
PSR-1 と PSR-2 を 5分でざっくり理解する
PDF
BigQueryのちょっとした話 #phpblt
Symfony meetup-7
Phpstudy98
フォロワーから友利奈緒を探す
「これはヤフオク!に機械学習を導入する男たちの戦いの物語である」#yjdsw4
ヤフオク!と機械学習#yjdsw1
Glt vol49
PSR-1 と PSR-2 を 5分でざっくり理解する
BigQueryのちょっとした話 #phpblt

Viewers also liked (20)

PDF
Security Advisories Checker on Travis/Circle CI
PPTX
Re: WebServer BenchMarking
PDF
apachehereというPHPのBuiltin Serverっぽいやつをつくった
PDF
What's new in Symfony3
PDF
install PHP7 on CentOS7 by Ansible
PDF
Composer並列化プラグイン #phpblt
PDF
新標準PSRに学ぶきれいなPHP
PPTX
MBSハッカソン協賛品_ハンズラボ20170211
PPTX
PHP x AWS でスケーラブルなシステムをつくろう
PPTX
とある小売IT企業での新卒仮想プロジェクト(工具共有サービス)
PPTX
クラウドお遍路20161001LT_青木由佳
PPTX
IT女子勉強会LT_どうしようもなくてもキャリアを創れ
PPTX
Glt vol48
DOCX
отчёт Buybrand expo 2012
PPTX
JAWS-UG開催情報 20170125-8th初心者支部
PPTX
PHP framework Phalcon
PDF
8時間耐久 PHP構築の教室
PPTX
AWSreinvent2016社内報告yuka_jyotei
PDF
型超ざっくり入門@ハンズラボ社内勉強会
PDF
Ember コミュニティとわたし
Security Advisories Checker on Travis/Circle CI
Re: WebServer BenchMarking
apachehereというPHPのBuiltin Serverっぽいやつをつくった
What's new in Symfony3
install PHP7 on CentOS7 by Ansible
Composer並列化プラグイン #phpblt
新標準PSRに学ぶきれいなPHP
MBSハッカソン協賛品_ハンズラボ20170211
PHP x AWS でスケーラブルなシステムをつくろう
とある小売IT企業での新卒仮想プロジェクト(工具共有サービス)
クラウドお遍路20161001LT_青木由佳
IT女子勉強会LT_どうしようもなくてもキャリアを創れ
Glt vol48
отчёт Buybrand expo 2012
JAWS-UG開催情報 20170125-8th初心者支部
PHP framework Phalcon
8時間耐久 PHP構築の教室
AWSreinvent2016社内報告yuka_jyotei
型超ざっくり入門@ハンズラボ社内勉強会
Ember コミュニティとわたし
Ad

More from Masanori Hayashi (10)

PPTX
「クソコード」言い換えのご提案 - 2018-12-15 #phpcon2018
PPTX
人のレガシーを笑うな - レガシー感謝の日
PPTX
20180627 phpstudy 長いものに巻かれよう
PPTX
20180425 phpstudy-my-first-laravel
PPTX
JAWS DAYS 2017直前! AWS総復習
PPTX
ボトルネックを解消せよ
PPTX
Glt vol47
PPT
俺的世界で一番暑い夏
PPT
Soft bank ssl仕様変更について
PDF
20081120 lt11th ace
「クソコード」言い換えのご提案 - 2018-12-15 #phpcon2018
人のレガシーを笑うな - レガシー感謝の日
20180627 phpstudy 長いものに巻かれよう
20180425 phpstudy-my-first-laravel
JAWS DAYS 2017直前! AWS総復習
ボトルネックを解消せよ
Glt vol47
俺的世界で一番暑い夏
Soft bank ssl仕様変更について
20081120 lt11th ace
Ad

Php blt-vol2