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 }}