Introducción

Bienvenido a la documentación de Twig, el motor de plantillas para PHP flexible, rápido y seguro.

Twig es amigable tanto para diseñadores como para desarrolladores, ya que se apega a los principios de PHP y añade funcionalidad útil para entornos de plantillas.

Sus características principales son...

  • Rápido: Twig compila las plantillas a código PHP plano optimizado. La sobrecarga en comparación con el código PHP regular se redujo al mínimo absoluto.

  • Seguro: Twig tiene un modo sandbox para evaluar código de plantillas no confiable. Esto permite usar Twig como lenguaje de plantillas para aplicaciones donde los usuarios pueden modificar el diseño de las plantillas.

  • Flexible: Twig está impulsado por un lexer y parser flexibles. Esto permite al desarrollador definir sus propias etiquetas y filtros personalizados, y crear su propio DSL (Lenguaje de Dominio Específico).

Twig es utilizado por muchos proyectos de Código Abierto como Symfony, Drupal8, eZPublish, phpBB, Matomo, OroCRM; y muchos frameworks también tienen soporte para él, como Slim, Yii, Laravel y Codeigniter, por nombrar algunos.

Note

¿Prefieres aprender con videotutoriales? ¡Echa un vistazo al Tutorial de Twig de SymfonyCasts

Requisitos Previos

Twig 3.x necesita como mínimo PHP 8.1.0 para funcionar.

Instalación

La forma recomendada de instalar Twig es mediante Composer:

    composer require "twig/twig:^3.0"

Uso Básico de la API

Esta sección te ofrece una breve introducción a la API de PHP para Twig::

require_once '/path/to/vendor/autoload.php';

$loader = new \Twig\Loader\ArrayLoader([
    'index' => 'Hola {{ name }}!',
]);
$twig = new \Twig\Environment($loader);

echo $twig->render('index', ['name' => 'Fabien']);

Twig utiliza un cargador (\Twig\Loader\ArrayLoader) para localizar plantillas, y un entorno (\Twig\Environment) para almacenar su configuración.

El método render() carga la plantilla pasada como primer argumento y la renderiza con las variables pasadas como segundo argumento.

Como las plantillas generalmente se almacenan en el sistema de archivos, Twig también incluye un cargador para el sistema de archivos::

$loader = new \Twig\Loader\FilesystemLoader('/path/to/templates');
$twig = new \Twig\Environment($loader, [
    'cache' => '/path/to/compilation_cache',
]);

echo $twig->render('index.html.twig', ['name' => 'Fabien']);