Twig es un motor de plantillas gratuito y de código abierto para PHP . Su sintaxis se origina en las plantillas Jinja y Django . [ 3 ] Tiene licencia BSD y es mantenido por Fabien Potencier. La versión inicial fue creada por Armin Ronacher . Symfony incluye soporte integrado para Twig como su motor de plantillas predeterminado desde la versión 2. [ 4 ]
El motor de plantillas Nunjucks utiliza el mismo lenguaje de plantillas, por lo que Nunjucks también es compatible con las siguientes herramientas.
Características
- Flujo de control complejo
- Escape automático
- Herencia de plantillas
- Filtros variables [ 5 ]
- Soporte i18n (gettext)
- Macros
- Totalmente ampliable [ 3 ] [ 6 ]
Twig es compatible con los siguientes entornos de desarrollo integrados : [ 3 ]
- Eclipse a través del complemento Twig
- Komodo y Komodo Edit a través del modo de resaltado/verificación de sintaxis de Twig
- NetBeans mediante el complemento de sintaxis Twig (hasta la versión 7.1, de forma nativa a partir de la versión 7.2)
- PhpStorm (nativo a partir de la versión 2.1)
- Entornos de desarrollo integrados (IDE) IntelliJ, incluido WebStorm, mediante un complemento.
Twig es compatible con los siguientes editores de texto :
- Atom a través de PHP-twig para Atom
- Emacs a través de web-mode.el
- Notepad++ a través del resaltador Twig de Notepad++
- Sublime Text a través del paquete Twig
- TextMate a través del paquete Twig
- Vim a través del complemento de sintaxis Jinja o el complemento vim-twig
- Soportes a través de Brackets Twig
- Visual Studio Code a través de la extensión Twig
- GTKSourceView a través de la definición del lenguaje Twig
- Coda a través del modo de sintaxis Twig
- Coda 2 a través del otro modo de sintaxis de Twig
- SubEthaEdit a través del modo de sintaxis Twig
Sintaxis
Twig define tres tipos de delimitadores:
{{ ... }}Se utiliza para imprimir el contenido de las variables o el resultado de evaluar una expresión. [ 7 ] : 585{# ... #}Se utiliza para añadir comentarios en las plantillas. Estos comentarios no se incluyen en la página final.{% ... %}Se utiliza para ejecutar instrucciones, como bucles for. [ 7 ] : 585 Por ejemplo:{%setfoo='bar'%}, asignar. [ 8 ]{%ifiisdefinedandi==1%} ... {%endif%}: condición.{%foriin0..10%} ... {%endfor%}: contador en un bucle.
A diferencia de PHP base, las variables de Twig no comienzan con un signo de dólar . [ 7 ] : 576 El apóstrofo (') es el carácter de escape.
Para crear un array iterativo:
{% establecer myArray = [ 1 , 2 ] %}Un arreglo asociativo:
{% establecer myArray = { 'key' : 'value' } %}Precedencia de operadores
La precedencia de los operadores es, [ 3 ] de menor a mayor prioridad:
Filtros
Los filtros proporcionan algunos tratamientos a una expresión, cuando se colocan después de ella, separados por barras verticales. Por ejemplo: [ 5 ]
capitalize: cambia la primera letra de una cadena a mayúscula.upper: cambia una cadena completa a mayúsculas.first: muestra la primera línea de una matriz.length: devuelve un tamaño variable.
Variables especiales
loopContiene la información del bucle actual. Por ejemplo,loop.indexcorresponde al número de iteraciones que ya se han producido.- Las variables globales comienzan con guiones bajos. Por ejemplo:
- _route (parte de la URL ubicada después del dominio)
- _self (nombre del archivo actual)
- Entonces, a la ruta de la página:
{{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) }}
- Las variables de entorno CGI , como por ejemplo
{{ app.request.server.get('SERVER_NAME') }}:
Ejemplo
El siguiente ejemplo muestra algunas características básicas de Twig.
{% extends "base.html" %} {% block navigation %} < ul id = "navigation" > {% for item in navigation %} < li > < a href = " {{ item.href }} " > {% if item.level == 2 %} {% endif %} {{ item.caption | upper }} </ a > </ li > {% endfor %} </ ul > {% endblock navigation %}Uso en el mundo real
Twig se ha convertido en un motor de plantillas ampliamente adoptado en el ecosistema PHP. Es el lenguaje de plantillas predeterminado para el framework Symfony y también está integrado en varios sistemas de gestión de contenido (CMS) y aplicaciones, entre ellos:
- A partir de la versión 8, Drupal adoptó Twig como su motor de plantillas predeterminado, reemplazando a PHPTemplate.
- CraftCMS utiliza Twig como su único lenguaje de plantillas, lo que permite a los desarrolladores crear experiencias de interfaz de usuario altamente personalizadas.
- eZ Platform (Ibexa) integra Twig para la representación de plantillas dentro de su sistema de gestión de contenidos.
- Bolt CMS utiliza Twig para la creación de temas y la representación del front-end.
- ShopWired utiliza Twig para la creación de temas y la representación de la interfaz de usuario.
- OpenCart utiliza Twig para la creación de temas y la representación HTML.
Twig también se utiliza en muchas aplicaciones PHP personalizadas donde la seguridad y la legibilidad de las plantillas son fundamentales. Su similitud con las plantillas de Jinja y Django ha contribuido a que resulte familiar para desarrolladores provenientes de Python y otros ecosistemas similares.
Véase también
Referencias
- ↑ "mitsuhiko/twig" . GitHub . 13 de agosto de 2019.
- ↑ "Versión 3.22.1" . 16 de noviembre de 2025. Consultado el 18 de noviembre de 2025 .
- 1 2 3 4 "Twig para diseñadores de plantillas - Documentación - Twig - El motor de plantillas PHP flexible, rápido y seguro" . Twig .
- ↑ "Documentación de Symfony2 — Documentación" . Twig . 5 de agosto de 2010. Archivado del original el 5 de agosto de 2010.
- 1 2 3 "Filtros - Documentación - Twig - El motor de plantillas PHP flexible, rápido y seguro" . Twig .
- ↑ "Ampliando Twig - Documentación - Twig - El motor de plantillas PHP flexible, rápido y seguro" . Twig .
- 1 2 3 Jon Duckett; Emme Stone; Chris Ullman (2022). PHP y MySQL: desarrollo web del lado del servidor . Hoboken, Nueva Jersey : John Wiley & Sons, Inc. ISBN 978-1-119-14921-7LCCN 2021951353. Archivado del original el 30 de abril de 2025. Consultado el 28 de abril de 2026 .
- ↑ "set - Documentación - Twig - El motor de plantillas PHP flexible, rápido y seguro" . Twig .
Enlaces externos
- Sitio web oficial de Twig
- Fabien Potencier (07-10-2009). "Motores de plantillas en PHP" . Recuperado el 27-10-2023 .
- Motores de plantillas
- Bibliotecas PHP
- Software libre programado en PHP
- Drupal