Twig, ejemplos básicos
Twig es un motor de plantilla para PHP, el cual viene soportado en el framework Symfony. Es muy recomendable, ya que separa la programación del diseño, siendo esto muy ventajoso para que quien esté creando la plantilla no deba tener conocimientos de programación.
Ejemplo
<div class="row"> <h3>Definir una variable</h3> {% set variable = "Hola mundo" %} </div> <div class="row"> <h3>Imprimir una variable</h3> {{ variable }} </div> <div class="row"> <h3>Definir un array</h3> {% set frutas =['Manzana', 'Pera', 'Fresa', 'Plátano'] %} </div> <div class="row"> <h3>Imprimir un array</h3> {% for item in frutas %} {{ item }} {% endfor %} </div> <div class="row"> <h3>Hacer dump de una variable o array</h3> {{ dump(variable) }} </div>
Delimitadores
- {% … %}, se utiliza para ejecutar declaraciones, como pueden ser los bucles for
- {{ … }}, se utiliza para imprimir el contenido de variables o el resultado de evaluar una expresión
- {# … #}, se utiliza para añadir comentarios en las plantillas. Estos comentarios no son incluidos en la página renderizada
Variables
<div class="row"> <h3>Definir una variable</h3> {% set variable="Hola Mundo" %} </div> <div class="row"> <h3>Imprimir una variable</h3> {{ variable }} </div> <div class="row"> <h3>Hacer dump de una variable o array</h3> {{ dump(variable) }} </div>
La variable podemos declararla nosostros o venir de PHP. Destacar que para definirla utilizamos {% … %} y para mostrarla {{ … }}.
Condicionales
<div class="row"> <h3>Definir un array</h3> {% set frutas =['Manzana', 'Pera', 'Fresa', 'Plátano'] %} </div> <div class="row"> <h3>Comprobar el tamaño de un array</h3> {% if frutas | length > 2 %} Hay más de 2 frutas. {% endif %} </div>
En el ejemplo anterior utilizamos el filtro length. Hablaremos de los filtros más abajo, pero puedes encontrar más información en la documentación.
Bucles
<div class="row"> <h3>Definir un array</h3> {% set frutas =['Manzana', 'Pera', 'Fresa', 'Plátano'] %} </div> <div class="row"> <h3>Imprimir un array</h3> {% for item in frutas %} {{ item }} {% endfor %} </div>
Lo normal será que el array esté en PHP, porque casi siempre serán generados a partir de una consulta a la base de datos.
Algunas funciones predefinidas
<div class="row"> <h3>Max</h3> {{ max([76,99,58]) }} {# imprime 99 #} </div> <div class="row"> <h3>Min</h3> {{ min([76,99,58]) }} {# imprime 76 #} </div> <div class="row"> <h3>Random</h3> {{ random(1000) }} {# imprime un número aleatorio entre 0 y 1000 #} </div> <div class="row"> <h3>Random</h3> {{ random(['Manzana', 'Pera', 'Fresa', 'Plátano']) }} {# imprime una fruta aleatoria #} </div> <div class="row"> <h3>Random</h3> {% set fecha = date(" -7 days ", " Europe/Madrid ") %} {{ dump(fecha) }} {# imprime la fecha de hace 7 días en Madrid #} </div>
Puedes leer más acerca de las funciones predefinidas en Twig en su documentación.
Filtros predefinidos
<div class="row"> <hr/> <h3>Formatear fecha de hace 7 días</h3> {% set fecha = date(" -7 days ", " Europe/Madrid ") %} {{ fecha.date | date("d-m-Y") }} {# imprime la fecha de hace 7 días en formato dd-mm-yyyy #} {% set texto = "agsnfmelg" %} {{ texto }} {# imprime el texto tal cual #} {{ texto|trim("g") }} {# imprime el texto tal cual , pero sin la última g #} </div>
Más información en su documentación.