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 }}
Categories: PHP