Usando TWIG para
desarrollar la Vista
en PHP
PHP ye olde way
<html>
<head><title><?php echo $title; ?></title>
<?php include_once head.php ?>
</head>
<body>
<?php
echo htmlspecialchars($myvar,ENT_QUOTES);
?>
<ul>
<?php foreach ($myarray as $item ) { ?>
<li><?php echo $item['nombre'].' '.$item['apellido']; ?></li>
</ul>
</body>
</html>
Usando TWIG 😎
<html>
<head><title>{{ title }}</title>
{% block head %}
{$ endblock %}
</head>
<body>
{{ myvar }}
<ul>
{% for $item in $myarray %}
<li>{{ item.nombre }} {{ item.apellido }} </li>
{% endfor %}
</ul>
</body>
</html>
Getting Started!!
Necesitarás:
- Composer
- PHP >= 5.4
- NodeJS con NPM*
- YEOMAN*
Declarando y mostrando Variables
{{ miVariable }} {# imprime $miVariable #}
{{ diccionario.anemona }} {#
imprime:
1 $diccionario['anemona']
2 $diccionario->anemona
3 $diccionario->anemona()
4 $diccionario->getAnemona()
5 $diccionario->isAnemona()
6 Null o error en caso de strict_variable
#}
{{ }} Significa imprime lo que esta adentro
{% %} Significa ejecuta lo que esta adentro
{% set admin = true %} {# declara admin como true #}
Variables globales
{{ _context }}
{# imprime el contexto actual #}
{{ _charset }}
{# imprime el charset actual #}
Filtros
Son funciones que se pueden aplicar a el texto previo a ser impreso.
Las funciones son similares a el pipelining de Linux con el symbolo '|'
{{ titulo | striptags | title }}
{# le quita las etiquetas y le da formato de titulo #}
{{ minisculas | lower }}
{# convierte todo el texto de $minusculas en miniúsculas #}
{% filter upper %}
texto en minisculas
{% endfilter %}
{# convierte todo el texto dentro del bloque en mayúsculas #}
{{ data|convert_encoding(from='iso-2022-jp', to='UTF-8') }}
{# convierte data de ISO-2022-JP a UTF-8 #}
{{ codigohtml | raw }}
{# muestra $codigohtml sin escapar #}
Estructuras de Control y Ciclos
Condicionales
{% if admin %}
<h1> Bienvenido Admin </h1>
{% endif %}
{# solo muestra el bloque si $admin es true #}
{% if nombre| length < 6 %}
{{ nombre }}
{% else %}
{{ nombre|slice(0, 5) }}
{% endif %}
{# despliega el nombre si tiene longitud menor a 5
si no lo corta a 5 #}
{% if kenny.sick %}
Kenny is sick.
{% elseif kenny.dead %}
You killed Kenny! You bastard!!!
{% else %}
Kenny looks okay --- so far
{% endif %}
{# nos dice como está Kenny :) #}
Ciclos
{% for i in 0..10 %}
* {{ i }}
{% endfor %}
{# imprime los números de el 0 al 10 #}
{% for user in users %}
{{ loop.index }}
{{ user.username }}
{% endfor %}
{# imprime $user['username'] #}
- loop.index
- loop.index0
- loop.first
- loop.last
- loop.length
Modular el Diseño con Bloques
Modular el Diseño con Bloques
<!doctype html>
<html>
<head>
{% block head %}
{% endblock %}
</head>
<body>
<header>
{%block header %}
{% endblock %}
<nav>{% block navbar %}</nav>
</header>
<main>
{% block main %}
{% endblock %}
</main>
<footer>
{% block footer %}
Made with Twig.
{% endblock %}
</footer>
</body>
</html>
layout.twig
footer.twig
{% extends layout.twig %}
{% block footer %}
© Copyright 2015 by EmpresaImportatante.
{{ parent() }}
{% endblock %}
Frameworks y CMS
que pueden
integrarse con Twig
-
Drupal 8
-
Symfony
-
Laravel
-
Silex
-
NodeJS *
-
Express*
* Requiere Twig JS
Rodrigo Reyes
http://rodkings.plethora.com.mx/
@kouryuu (Github)
@scrooge_mc_pato (Twitter)
rodrigo@plethora.com.mx
¡GRACIAS !
Preguntas y comentarios
(no sean tímidos)
TWIG PHP WAY
By Rodrigo Reyes
TWIG PHP WAY
- 854