WordPressやSymfonyのTipsを中心にアニメや日常の出来事について語ります。
メニュー

Symfony2 Twigテンプレートの使い方まとめ

この記事は約5分54秒で読めます

Twigロゴ
ゆっきー
ども、カフェブロガーの悠木です。 お気に入りのカフェはドトールコーヒーです。 14時からの限定スイーツ「シューシャポー」が大好きです。

TwigはSymfony2で標準で使えるテンプレートエンジンです。

Twigの特徴

  • 高速
    • 素のPHPコードを最適化するため、オーバーヘッドを最小限にできる
  • セキュア
    • 自動エスケープやsandboxモードにより安全性を確保している
  • 柔軟
    • カスタムタグやカスタムフィルターを定義できる
    • テンプレートを継承できる。
    • もちろん、部品化してインクルードも簡単にできる。

ドキュメントもしっかり用意されている。ただし英語です。

Twigの基本

  • {{ hoge }} 二重波括弧で囲んで変数表示
  • {% if hoge == true %}...{% endif %} 波括弧+パーセントで囲んで条件式
  • {# this is comment #} 波括弧+シャープで囲んでコメント文

上記3つのタグを書くだけでTwigを使用できます。
<?php echo $hoge; ?> と書いていたことが {{ hoge }} と書けばいいのでこれだけですごく使いやすいですね。
ちなみにTwigテンプレート内ではPHPタグの記述はできません。

親テンプレートを作る

大元となるapp/Resources/views/base.html.twigを作成します。
Symfonyインストール時に作成されるのでそのままでも構わない。

Twigテンプレート内は基本的にHTMLで書き、使いたい部分だけTwigタグを呼び出す形です。
ブラウザのソースコードで見た時にインデントによる余計な空白が嫌いな人はspacelessタグで囲っておくと幸せになる。

基本的に親テンプレートのであるbase.html.twigを継承extendsしてbodyブロックを上書きしていく形になります。

よく使うタグ、フィルタ、関数の紹介

Twigは標準で70種類以上のタグ、フィルタ、関数が用意されています。とても便利なのでぜひ有効活用しましょう!
カスタムTwig拡張することで独自のフィルタなど追加することもできます。

extends – 継承

指定したテンプレートを継承できる。Twigファイルの1行目に記述する。
多重継承はサポートされていません。Bundle:Controller:TwigFileNameと指定できる。

ベストプラクティスはapp/Resources/viewsにすべてのテンプレートを配置する。

親で定義しているブロックを子テンプレートでも記述すると親ブロックの内容を上書きできます。
またparent()することで親ブロックの内容を呼び出せるので追記して子テンプレートの内容を記述できます。

include – インクルード

ファイルのインクルードが行えます。共通の部品(ヘッダー・フッターなど)別ファイルとして切り出したファイルを読み込めます。

withで引数を渡すこともできます。

template_from_string

文字列をテンプレートとしてインクルード

path – リンク

block – ブロック

ブロックタグ。使い方は無限大。

set – 変数定義

Twigは次のように文字列, 配列, 連想配列, 複数の変数定義できます。

if – 条件文

演算子

Twigで使える演算子です。優先順位が低い順に並べています。

b-and, b-xor, b-or, or, and, ==, !=, <, >, >=, <=, in, .., +, -, ~, *, /, //, %, is, **

数値演算子

Twigでは次の数値演算子がサポートされています。

  • +: 2つの対象を加算します (演算対象は、数字にキャストされます)。{{ 1 + 1 }}2
  • -: 最初の数から、2番目の数を減算します。{{ 3 - 2 }}1
  • /: 2つの数字を除算します。 戻り値は、浮動小数点の 数値になります。{{ 1 / 2 }}{{ 0.5 }}
  • %: 整数で除算した余りを計算します。{{ 11 % 7 }}4
  • //: 2つの数字を除算し、結果を切り捨てて整数にして返します。{{ 20 // 7 }}2
  • *: 左の演算対象を右の演算対象で、乗算します。{{ 2 * 2 }} は、4を返します。
  • **: 左の演算対象を右の演算対象で、累乗します。{{ 2 ** 3 }} は、8を返します。

論理演算子

Twigでは次の論理演算子がサポートされています。
また、ビット演算子(b-and, b-xor, b-or)もサポートされています。

  • and: 左右の値が、どちらもtrueの場合に、trueを返します。
  • or: 左右の値が、どちらか一方、trueの場合に、trueを返します。
  • not: ステートメントを否定します。
  • (expr): 式をグループ化します。

比較演算子

Twigでは次の比較演算子がサポートされています。

==, !=, <, >, >=, <=

for

配列のループ

一般的なTwigのループの書き方です。

配列のループ(添字付き)

配列のループ(添字のみ)

指定回数ループ

指定回数ループ(増分指定)

reverse – 逆順ループ

添字の値で逆順を取得したい場合はreverse(true)と指定する。

ループ内で使用できる変数

変数 備考
loop.index ループした回数(1から始まる)
loop.index0 ループした回数(0から始まる)
loop.revindex ループした回数(最後からカウント、1から始まる)
loop.revindex0 ループした回数(最後からカウント、0から始まる)
loop.first 最初の要素のときtrueを返す
loop.last 最後の要素のときtrueを返す
loop.length 配列の長さを返す
loop.parent ネストしてるループのとき、上階層のループ要素を取得

例として3の倍数の時だけ処理を実行したい場合は次のようにする。

数値の操作

number_format – 数値のフォーマットを指定する

3桁カンマ区切りの数値や小数点以下第何位まで表示するか指定できます。

abs – 絶対値を表示する

round – 数値を四捨五入する

for-if文

for文とif文を一緒に書く方法もあります。

文字の操作

文字連結(文字結合)

Twigは文字の連結に~(チルダ)を使います。

大文字、小文字変換

trim – 文字列の先頭と末尾から空白を取り除く

format – 書式を指定して表示する

配列の操作

配列の先頭の要素を取得

配列、連想配列、文字列でもOK

すべて1が表示される。

配列の末尾の要素を取得

length – 配列または文字列の長さを返す

slice – 配列の一部を展開する

sort – 配列を並び替える

PHPのasortと同じく連想キーと要素との関係を維持しつつ配列をソートします。

join – 配列を結合して表示

max – 最大値を表示

最大値を表示する。カンマ区切りで渡しても配列を渡しても良い。

min – 最小値を表示

最小値を表示する。カンマ区切りで渡しても配列を渡しても良い。

random – ランダム値を表示

ランダムな数値を表示する。
引数に配列、文字列、数値を渡すことで引数からランダムな値を表示できる。

日付

日付型の変数を表示

Twigで日付型のデータを表示する場合、dateフィルターを通して表示します。

現在日時を表示

タイムゾーン指定

日付の変更

変換

convert_encoding – 文字コード変換

パラメータを指定しない場合は’convert_encoding(to, from)’の順番になる。

url_encode – 文字列をURLエンコード

json_encode – JSONエンコード

striptags – 文字列からHTMLおよびPHPタグを取り除く

escape – 特殊文字をHTMLエンティティに変換

nl2br – 文字列内の改行コードをHTMLの改行に変換

raw – HTMLタグをエスケープしないで出力する

trans – 翻訳

翻訳機能を日本語をデフォルトにして有効化

翻訳辞書ファイルの作成

呼び出し方

spaceless – 空白(スペース)の除去

HTMLタグの間のスペースを除去します。

その他

default – 未定義のデフォルト表示

変数が未定義、中身が空の場合はdefaultフィルタに渡された値を返します。

source – ファイル読み込み

PHPのfile_get_contentsと同じ

デバッグ

権限

定数の取得

TwigからControllerやEntityで定義しているconstの値にアクセスできます。

グローバルテンプレート変数

よく使うグローバルテンプレート変数

METHOD

ルートディレクトリ

ルートパス

URI

パス

パス名

コントローラ名

参考

Symfony2,PHP オススメ書籍

関連記事

  1. symfony2
  2. Symfony2 blogチュートリアル 06-2 テーブルスキーマからエンティティを生成
  3. symfony2
  4. Amazon Web Services(AWS) Symfony
  5. Symfony2 blogチュートリアル Symfony インストール
  6. symfony2

コメントをお待ちしております

PR

カテゴリー