TWIG是一套PHP的Template Engine,目前Drupal 8就是使用TWIG
安裝
安裝的方式很簡單,透過composer就可以安裝
{ "require": { "twig/twig": "1.*" } }
composer install
基本用法
字串
require "vendor/autoload.php"; //讀取字串 $loader = new Twig_Loader_String(); $twig = new Twig_Environment($loader); //傳入字串及內容(兩個大括號用來表示變數) echo $twig->render('Hello {{ name }}!', array('name' => 'JohnsonLu'));
Template
require "vendor/autoload.php"; //定義template資料夾 $loader = new Twig_Loader_Filesystem('templates'); //在環境設定中,可以選擇使用cache,並自行定義cache資料夾 $twig = new Twig_Environment($loader, array( 'cache' => 'compilation_cache', )); //傳入template檔案及內容 echo $twig->render('tpl.html', array('name' => 'JohnsonLu'));
HTML
<div>{{ name }}</div> {# 這是註解 #}
判斷式
一般判斷式
{% if false != online %} <div>false</div> {% else %} <div>true</div> {% endif %}
關係運算子
{% if true == loop.first or true == last %} <div>good</div> {% endif %}
迴圈
一般迴圈
echo $twig->render('tpl.html', array('users' => array("JohnsonLu","Test","Mary Lu")));
<ul> {% for user in users %} <li>{{ user }}</li> {% endfor %} </ul>
break條件
<ul> {% for user in users if "Test" == user %} <li>{{ user }}</li> {% endfor %} </ul>
else(Item為空判斷)
如果users為空的話會直接顯示else裡的資訊
<ul> {% for user in users %} <li>{{ user }}</li> {% else %} <li>not found</li> {% endfor %} </ul>
key-value
<ul> {% for key, user in users %} <li>{{ key }}-{{ user }}</li> {% endfor %} </ul>
loop variable
在twig中有提供一個loop的物件方便控制迴圈
<ul> {% for user in users %} {% if true == loop.first or true == loop.last %} <li>{{ user }}</li> {% endif %} {% endfor %} </ul>
Filter
{# 字串長度 #} {{ name|length }} {# 字串escape #} {{ name|escape }} {# 可以縮寫 #} {{ name|e }} {# 針對javascript escape #} {{ name|e('js') }} {# 取最後一個item #} {{ [1, 2, 3, 4]|last }} {# 取最後一個字 #} {{ '1234'|last }}