Hoy voy a hablar un poco de Twig, una herramienta más enfocada al diseño web que a la programación que viene integrada en el framework Symfony2, pero que puede utilizarse también por separado.
Twig es un motor de plantillas para PHP similar a Smarty. Es un proyecto de código abierto (open source) ofrecido bajo licencia BSD y desarrollado por Fabien Potencier, el creador de Symfony. Por ello es lógico que Twig sea el motor de plantillas por defecto de Symfony2.
Al igual que otros motores de plantillas, Twig ayuda a separar de forma sencilla la lógica de la aplicación (código PHP) de la presentación (HTML/CSS). Es una herramienta muy potente pero a la vez muy flexible que permite diseñar plantillas de presentación muy complejas sin usar instrucciones PHP, haciendo que el código HTML/CSS final sea mucho más legible.
Ejemplo
El siguiente es un ejemplo básico de plantilla Twig:
<!DOCTYPE html> <html> <head> <title>Client List</title> </head> <body> <h1>Client List</h1> <ul> {# Recorrido por la lista de clientes #} {% for client in clients %} <li> <a> href="/client/{{ client.id }}"> {{ client.name }} </a> </li> {% else %} No se han encontrado clientes. {% endfor %} </ul> </body> </html>
Variables, filtros y funciones
Uando Twig podemos acceder al contenido de una variable simplemente poniendo su nombre entre llaves dobles: {{ var }}
. Además podemos acceder a las propiedades de un objeto usando la sintaxis {{ obj.attr }}
. Este mecanismo es tan potente y flexible en Twig que buscará primero como elemento (obj['attr']
); si no existe buscará como atributo (obj.attr
); y por último si no existe buscará como método (obj.getAttr()
). Otra característica de Twig es que podemos aplicar filtros a las variables para modificar su comportamiento. Por ejemplo para formatear una fecha antes de imprimirla en pantalla: {{ date | date('d/m/Y H:i') }}
. Los filtros además pueden encadenarse de forma que se ejecuten uno detras de otro. Así {{ text | striptags | upper }}
eliminaría los tags HTML del texto y lo escribiría en mayúsculas.
Estructuras de control
En Twig hay una serie de instrucciones que se escriben entre {% ... %}
.
{% if cond1 %}...{% elseif cond2 %}...{% else %}...{% endif %}
{% for item in array %}...{% else %}...{% endfor %}
{% set var = value %}
- Etc.
Comentarios
Los comentarios se escriben entre {# ... #}
:
Referencias
- Twig: The flexible, fast, and secure template engine for PHP [EN]
- Twig Documentation from Sensio Labs [EN]
- Twig (template engine): Wikipedia [EN]
- Manual de Twig en Español [ES]
No hay comentarios:
Publicar un comentario