Twig es un motor de plantillas para el lenguaje de programación PHP . Su sintaxis se origina en las plantillas de Jinja y Django . [3] Es un producto de código abierto [4] con licencia BSD y mantenido por Fabien Potencier. La versión inicial fue creada por Armin Ronacher . El framework PHP de Symfony viene con un paquete de soporte para Twig como su motor de plantilla predeterminado desde la versión 2. [5]
Autor (es) original (es) | Armin Ronacher , [1] Fabien Potencier |
---|---|
Desarrollador (es) | Symfony SAS |
Versión inicial | 12 de octubre de 2009 |
Lanzamiento estable | 3.3.2 [2] / 16 de mayo de 2021 |
Repositorio | |
Escrito en | PHP |
Sistema operativo | Multiplataforma |
Tipo | Motor de plantillas |
Licencia | Licencia BSD |
Sitio web | ramita |
Características
- flujo de control complejo
- escape automático
- herencia de plantilla
- filtros variables [6]
- soporte i18n (gettext)
- macros
- totalmente extensible [3] [7]
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 verificación de sintaxis / resaltado de Twig
- NetBeans a través del complemento de sintaxis Twig (hasta 7.1, nativo a partir de 7.2)
- PhpStorm (nativo a partir de 2.1)
Y los editores de texto:
- Atom a través de PHP-twig para atom
- emacs a través de web-mode.el
- Notepad ++ a través de Notepad ++ Twig Highlighter
- Sublime Text a través del paquete Twig
- TextMate a través del paquete Twig
- vim a través del complemento de sintaxis de Jinja o el complemento vim-twig
- Soportes a través de soportes Twig
- Visual Studio Code a través de la extensión Twig
- GTKSourceView a través de la definición de lenguaje Twig
- Coda a través del modo de sintaxis Twig
- Coda 2 a través del otro modo de sintaxis Twig
- SubEthaEdit a través del modo de sintaxis Twig
Sintaxis
Twig define tres tipos de delimitadores:
{{ ... }}
, para imprimir el contenido de las variables o el resultado de evaluar una expresión (por ejemplo: una plantilla Twig heredada con{{ parent() }}
).{# ... #}
, para agregar comentarios en las plantillas. Estos comentarios no se incluyen en la página renderizada.{% ... %}
, para ejecutar sentencias, como bucles for.{% set foo = 'bar' %}
, asignar. [8]{% if i is defined and i == 1%} ... {% endif %}
: condición.{% for i in 0..10 %} ... {% endfor %}
: contador en bucle.
El apóstrofo (') es el carácter de escape.
Para crear una matriz iterativa:
{% set myArray = [ 1 , 2 ] %}
Una matriz asociativa:
{% set myArray = { 'clave' : 'valor' } %}
Precedencia de operadores
La precedencia de los operadores es, [3] de menor a mayor prioridad:
Operador | Papel |
---|---|
banda | Y bit a bit |
b-xor | XOR bit a bit |
b-o | O bit a bit |
o | O |
y | Y |
== | ¿Es igual? |
! = | ¿Es diferente? |
< | Inferior |
> | Superior |
> = | Superior o igual |
<= | Inferior o igual |
en | Dentro |
partidos | Corresponde |
comienza con | Empieza por |
termina con | Termina por |
.. | Secuencia (ej . 1..5 :) |
+ | Más |
- | Menos |
~ | Concatenación |
* | Multiplicación |
/ | División |
// | División redondeada a menor |
% | Modulo |
es | Prueba (ej: is defined o is not empty ) |
** | Energía |
| | Filtro [6] |
[] | Entrada de matriz |
. | Atributo o método de un objeto (ex: country.name ) |
Filtros
Los filtros proporcionan algunos tratamientos a una expresión, cuando se colocan después de ella, separados por tubos. Por ejemplo: [6]
capitalize
: cambia la primera letra de una cadena a mayúscula.upper
: cambia una cadena completa a mayúscula.first
: muestra la primera línea de una matriz.length
: devuelve un tamaño variable.
Variables especiales
loop
contiene la información del bucle actual. Por ejemplo,loop.index
corresponde 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 de archivo actual)
- Entonces, a la ruta de una página:
{{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) }}
- Las variables de entorno CGI , como
{{ app.request.server.get('SERVER_NAME') }}
.
Ejemplo
El siguiente ejemplo demuestra algunas características básicas de Twig.
{% Extiende "base.html" %} {% bloque navegación %} < ul ID = "navegación" > {% para artículo en navegación %} < li > < un href = " {{ item.href }} " > { % si item.level == 2 %} & nbsp; & nbsp; {% endif %} {{ item.caption | upper }} a > li > {% endfor %} ul > {% endblock navigation %}
Ver también
- Sabelotodo
Referencias
- ^ "mitsuhiko / twig" . 13 de agosto de 2019 - a través de GitHub.
- ^ "Versión 3.3.2" . 16 de mayo de 2021 . Consultado el 22 de mayo de 2021 .
- ^ a b c d "Twig para diseñadores de plantillas - Documentación - Twig - El motor de plantillas PHP flexible, rápido y seguro" . twig.symfony.com .
- ^ "twigphp / Twig" . 1 de julio de 2020 - a través de GitHub.
- ^ "Documentación de Symfony2 - Documentación" . web.archive.org . 5 de agosto de 2010.
- ^ a b c "Filtros - Documentación - Twig - El motor de plantillas PHP flexible, rápido y seguro" . twig.symfony.com .
- ^ "Extendiendo Twig - Documentación - Twig - El motor de plantillas PHP flexible, rápido y seguro" . twig.symfony.com .
- ^ "set - Documentation - Twig - El motor de plantillas PHP flexible, rápido y seguro" . twig.symfony.com .
enlaces externos
- Sitio web oficial de Twig
- Plantillas de motores en PHP , Fabien Potencier, 2009