Twig para PHP: guía completa con ejemplos prácticos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Twig para PHP: Guía completa del motor de plantillas de Symfony

Twig es un motor de plantillas moderno, rápido y seguro para el lenguaje PHP, desarrollado por el equipo de Symfony. Proporciona a los desarrolladores una sintaxis potente e intuitiva para separar la lógica de presentación (plantillas) de la lógica de negocio de la aplicación. Twig resuelve un problema clave del desarrollo web: la mezcla de código PHP con HTML, que genera "código espagueti" y reduce la legibilidad y el mantenimiento del proyecto.

El objetivo principal de Twig es hacer que las plantillas sean limpias, seguras y fáciles de leer. A diferencia del PHP puro, Twig limita al desarrollador para que no ejecute código arbitrario dentro de la plantilla, lo que previene vulnerabilidades típicas como ataques XSS (Cross-Site Scripting) mediante el escape automático de la salida. En lugar de complejas estructuras <?php foreach(...): ?>, usas concisos {% for item in items %}, y en lugar de <?= $var ?>, usas {{ var }}. Esto hace que las plantillas sean accesibles para maquetadores y desarrolladores frontend que no conocen PHP.

Twig es el estándar de facto para el framework Symfony, pero también se integra perfectamente con Laravel (a través del paquete twigbridge), Drupal, WordPress y se puede usar como librería independiente en cualquier proyecto PHP. Gracias a funciones como la herencia de plantillas, macros, sandbox y escape automático, Twig es uno de los motores de plantillas más populares en el ecosistema PHP.

Instalación

La instalación de Twig se realiza a través del gestor de dependencias Composer. Asegúrate de tener Composer instalado globalmente.

composer require twig/twig:^3.0

Después de ejecutar el comando, en tu proyecto aparecerán la carpeta vendor/ y el archivo composer.json con la dependencia añadida. Para la autocarga de clases, usa el archivo estándar vendor/autoload.php.

Inicio rápido: Ejemplo mínimo funcional

Vamos a crear una plantilla sencilla y mostrarla. Estructura del proyecto:

project/
├── templates/
│   └── saludo.html.twig
├── vendor/
└── index.php

Plantilla: templates/saludo.html.twig

<!DOCTYPE html>
<html>
<head>
    <title>Saludo</title>
</head>
<body>
    <h1>¡Hola, {{ nombre }}!</h1>
    <p>Hoy es {{ "now"|date("d/m/Y") }}.</p>
</body>
</html>

Script PHP: index.php

<?php
require_once 'vendor/autoload.php';

use Twig\Environment;
use Twig\Loader\FilesystemLoader;

// 1. Creamos el cargador que apunta a la carpeta de plantillas
$loader = new FilesystemLoader('templates');

// 2. Creamos el entorno de Twig
$twig = new Environment($loader, [
    'cache' => 'cache', // Ruta para el caché (recomendado)
    'auto_reload' => true, // Recargar automáticamente al hacer cambios (para desarrollo)
]);

// 3. Renderizamos la plantilla, pasando las variables
echo $twig->render('saludo.html.twig', ['nombre' => 'Mundo']);
?>

Abre index.php en tu navegador. Verás una página con el título "¡Hola, Mundo!" y la fecha actual.

Métodos y funciones principales de Twig

A continuación se presentan los métodos y construcciones clave que forman la base del trabajo con Twig.

1. Environment::render() — Renderizado de plantillas

Firma: public function render(string $name, array $context = []): string

Descripción: Método principal para mostrar una plantilla. Recibe el nombre del archivo de plantilla (relativo a la raíz del cargador) y un array asociativo de variables (contexto) que estarán disponibles dentro de la plantilla.

<?php
// Dentro de la plantilla 'perfil.html.twig' estarán disponibles las variables $us                    

Recommendations