3. Porque aprender mais uma linguagem ?
1. Ajuda a separar dados e apresentação (MVC).
2. Fim das short open tags do PHP7 (<% …).
3. Contemplado por : Symfony, Drupal8, eZPublish, phpBB, Piwik, OroCRM,Slim,
Yii, Laravel, Codeigniter and Kohana.
4. Pre-req : PHP7 para a versao 2
Do fabricante (Symfony) :
● Fast: Twig compiles templates down to plain optimized PHP code. The
overhead compared to regular PHP code was reduced to the very
minimum.
● Secure: Twig has a sandbox mode to evaluate untrusted template code.
This allows Twig to be used as a template language for applications where
users may modify the template design.
● Flexible: Twig is powered by a flexible lexer and parser. This allows the
developer to define their own custom tags and filters, and to create their
own DSL.
6. MYSQL
Metodologia MVC TWIG
Model (BD)
Controller
(.php)
View (echo)
$_GET
$_POST
http://www.site.com.br/index.php
foreach ($produtos as $p){
echo $p[‘nome’];
}
model/produtos.php
model/categs.php
model/usuarios.php
detalhes.php
carrinho.php
listagem.php
7. <?php
● composer e inicialização (twig, pdo, etc)
● busque no servidor oq eu preciso
● se for o caso analisar $_POST, $_GET
● faça as contas necessárias
● jogue o valor nas variáveis
extends ‘principal.twig’
{% for … %}
{{ dados }}
{% endfor %}
use aqui as tags html sem medo de ser feliz
echo $twig->render(‘listagem.twig’, [
‘produtos’=>$produtos,
...
]);
MYSQL
Metodologia MVC TWIG
14. if e for
{% for produto in produtos %}
{{ produto.nome }} por R$ {{ produto.preco }}
{% if produto.estoque > 0 %}
pronta-entrega
{% endif %}
{% endfor %}
15. variáveis
{% set total=0 %}
{{ total }}
{% set nome=”Gustavo Almeida” %}
{{ nome }}
{% set items=[‘fogao’,’geladeira’,’tv’] %}
{{ items.1 }}
16. block, include e extends
Com block eu defino no bloco pai, o trecho que vai ser herdado dos filhos.
{% block conteúdo %}{% endblock %}
Com extends eu defino qual será o bloco pai.
{% extends “main.html” %}
Exemplo - usar include para incluir o menu de categs.
{% include ‘categs.html’ %}
17. css e js de cada página modularizado
{% block css %}
<style>
</style>
{% endblock %}
{% block js %}
<script>
<script>
{% endblock %}
18. block, include e extends
PAGINA MODELO
includes ‘menu.twig’
block conteudo
PAGINA FILHA
endblock
extends ‘modelo.twig’
19. block, include e extends
global (carrinho, login)
categs
global
include
conteudo dinamico
{% block content %}
{% endblock %}
main.twig