【PHP】Twigまとめ

業務でtwigを使用しているのですが、情報を探すのに一苦労したので
コマンド一覧まとめ。

twigとは

PHP製のテンプレートエンジン。
インストール〜初期設定は下記記事などでまとめてくださっています

TwigとはPHPのテンプレートエンジン。 ### インストール ``` composer require "twig/twig:~1.0" ``` 実行結果(Window
Twig は PHP のテンプレートエンジン。ちょっと前までは PHP のテンプレートエンジンといえば Smarty なもんだと思っていたら、最近は Twig がよいと聞くので触

1.全体

継承

extends.php
{% extends 'ファイルパス' %} 
  • 別ファイルから継承する(複数はNG)
  • 親ブロックを子ブロックが上書きする
  • {% block ブロック名%}〜{% endblock %}

挿入

{% include 'ファイルパス'%}
{% include 'aa/aa' with[ 'aa' : 'aa'] %} //引数も取れます

コメント文

{# ここにコメントを書く#}

CSRF対策


HTML文のエスケープ

 

その他

 //文字数
 //PHPのdumpと一緒

2.変数

書き方


※ただし条件式の中ではは不要。(例:{% if post=”hello” %})

定義方法

①同じTwig内で設定する

{% set 変数名='value' %}
  • 配列の場合は{% set array = [ A, B ] %}
  • 連想配列は{% set array =  [ key : value ] %}

②Contorollerなどから渡す

変数:
配列: ※連想配列も可

▼例 (部分抜粋)

app/Controllers/PostController.php

$url = 'URLです';
$post = $this->post_model->getPostArray();
    // 'id' => '1', 'title' => 'タイトル'
return view('post/show',
[
    'url' =>$url, //変数 
    'posr' =>$post //配列
];
resouse/view/post/show.twig
<p>変数は「」です。</p>
<p>配列は idがで、
titleがです。</p>

出力結果

変数は「URLです」です。
配列は idが1で、titleがタイトルです。

その他

バリデーションエラーなど定型変数の時の書き方

input_old('タグの名前') // セッションなどで確認フォーム利用時
errors.first('タグの名前') //バリデーションエラー時

3.条件式

if文

{% if 条件式 %}
{% endif %}
  • 通常のif文が上記の書き方で使える
  • 条件式内で変数を定義した場合、条件文外では使用不能
  • 条件文内では、変数にはつけない
  • else文、elseif文、複数条件の場合はandやorも使用可能
{% if 条件式A and 条件式B %}
{% elseif 条件式 %}
{% else %}
{% endif %}

for文

{% for i = 1 1..100 %}
{% endfor %}
  • iは任意です
  • 連想配列の場合は{% for key, value in 配列名 %}

foreach文( ループ, for in で代用 )

{% for hoge in array %}
{% endfor %}
  • arrayに任意の配列、hogeも任意の名前です

三項演算子


  • 条件文が正の時にA、誤の時B

例文

①テンプレート・変数を使用したページ

sample.twig
{% extends 'layout/user_default'%}
{% block content %}
{% set title='hello' %}
<div class="sample">
    <h1></h1>
</div>
{% endblock %}

 

②Emailのフォーム(一部抜粋)

email.twig
<div class="form-group">
    <label for="f-email">Email address</label>
    <input type="email" name="email" class="form-control" id="f-mail"
     value="" placeholder="entry@leverages.jp">
     {% if errors.first('email')|length > 0 %}
    <span class="text-danger"></span>
    {% endif %}
</div>

 

公式リンク

ついでにブログでもまとめています。

業務でtwig文を使っていたのですが情報がバラバラだったのでまとめ。 目次 目次 1.全体 インストール 継承 挿入 コメント文 CSRF対策 HTML文のエスケープ その他 2.

以上

[紹介元] PHPタグが付けられた新着投稿 – Qiita 【PHP】Twigまとめ

関連記事