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