Twig é um moderno mecanismo para criação de templates em PHP. A sua vantagem, é que ele processa o código PHP de forma otimizada, reduzindo o seu tempo de processamento, além de ser seguro e flexível, podendo criar suas próprias tags, filtros e DSL.
Twig é utilizado por diversos projetos Open-Source, como: Symfony, Drupal 8, eZPublish, phpBB, Piwik, OroCRM. E muitos frameworks lhe dão suporte, como: Slim, Yii, Laravel, Codeignite, Kohana, etc.
Para saber mais sobre o Twig, consulte a sua página oficial.
O Twig possui uma sintaxe simples e de fácil aprendizado.
Para imprimir algo, utilizamos:
{{ Imprime algo }}
Para fazer alguma lógica:
{% Faça alguma lógica aqui! %}
Para escrever um comentário:
{# Comentário #}
Vamos a alguns exemplos práticos:
IF
Para verificar se uma expressão é verdadeira:
{% if online == false %}
<p>Our website is in maintenance mode. Please, come back later.</p>
{% endif %}
Para verificar se um array não é vazio:
{% if users %}
<ul>
{% for user in users %}
<li>{{ user.username|e }}</li>
{% endfor %}
</ul>
{% endif %}
Utilizando "not" para verificar se o valor é falso:
{% if not user.subscribed %}
<p>You are not subscribed to our mailing list.</p>
{% endif %}
Para múltiplas condições você pode utilizar "and" ou "or":
{% if temperature > 18 and temperature < 27 %}
<p>It's a nice day...</p>
{% endif %}
Múltiplos ramos:
{% if kenny.sick %}
Kenny is sick.
{% elseif kenny.dead %}
You killed Kenny!
{% else %}
Kenny looks okay.
{% endif %}
Vaja aqui a documentação completa do if.
FOR
Loop para exibir os itens em sequência:
<ul>
{% for user in users %}
<li>{{ user.username|e }}</li>
{% endfor %}
</ul>
Para uma sequência de números ou letras, você pode utilizar o operador "..":
{% for i in 0..10 %}
* {{ i }}
{% endfor %}
{% for letter in 'a'..'z' %}
* {{ letter }}
{% endfor %}
Adicionando uma condição:
<ul>
{% for user in users if user.active %}
<li>{{ user.username|e }}</li>
{% endfor %}
</ul>
Veja aqui a documentação completa do for.
DATE
Exemplos de formatações:
{{ post.published_at|date("m/d/Y") }}
{{ "now"|date("m/d/Y") }}
{{ post.published_at|date("m/d/Y", "Europe/Paris") }}
Veja aqui a documentação completa das formatações para date.
Exemplos de funções:
{% if date(user.created_at) < date('-2days') %}
{# do something #}
{% endif %}
{% if date(user.created_at) < date('-2days', 'Europe/Paris') %}
{# do something #}
{% endif %}
Veja aqui a documentação completa das funções para date.
Como vimos nos exemplos acima, a sintaxe do Twig é mais simples comparada ao PHP, tornando seu aprendizado mais rápido e fácil.
Não deixe de conferir a sua documentação completa.
Até o próximo tutorial!
Publicado originalmente em : http://www.drupalbrasil.com.br/o-que-e-twig