Aprende a usar PHP para renderizar tus plantillas en lugar de Twig en Silex 2.

Cómo usar PHP como motor de plantillas en lugar de Twig en Silex

La opinión entre los desarrolladores sobre el uso o no de un motor de plantillas en proyectos PHP es muy controvertida y no es fácil de terminar. Los desarrolladores a los que no les gustan los motores de plantillas como Smarty o Twig, son libres de pensar lo que quieran y proceder como quieran, es decir, seguir usando las plantillas PHP detalladas. En Silex, Twig se usa de forma predeterminada en muchos esqueletos debido a su simplicidad, sin embargo, puede implementar PHP como motor de plantillas y también utilizando el motor de plantillas de Symfony. En este artículo te mostraremos cómo implementarlo y no fallar en Silex 2.

1. Instala el motor de plantillas de Symfony

Cualquiera con conocimientos básicos de PHP podría implementar su propio motor de plantillas para silex con PHP, sin embargo, hay una mejor manera de hacerlo gracias al motor de plantillas Symfony. El componente de plantillas de Symfony proporciona todas las herramientas necesarias para crear cualquier tipo de sistema de plantillas con PHP simple. Proporciona una infraestructura para cargar archivos de plantilla y, opcionalmente, monitorearlos para detectar cambios. También proporciona una implementación de motor de plantilla concreta usando PHP con herramientas adicionales para escapar y separar plantillas en bloques y diseños.

Para usarlo en Silex, necesita instalar el componente usando composer con el siguiente comando:

composer require symfony/templating

Después de la instalación del componente, podrá importar las clases que necesita para comenzar a renderizar plantillas PHP en lugar de Twig en Silex.

2. Implementación del motor de plantillas

Como sabes, puedes asignar fácilmente contenido personalizado a la variable $app de silex, muchos componentes se definen de esta manera como twig, db, etc. De la misma manera, registraremos el servicio de renderizado que no sobrescribirá a Twig, como puede también lo necesita (o tal vez no, sin embargo, puede conservar ambos). En tu archivo app.php (o el punto de entrada donde $ app está disponible) proceda a registrar el componente:

<?php

// ./project/src/app.php

// Incluir las clases requeridas del motor de plantillas de Symfony
use Symfony\Component\Templating\PhpEngine;
use Symfony\Component\Templating\TemplateNameParser;
use Symfony\Component\Templating\Loader\FilesystemLoader;
 
// Registrar el proveedor de "plantillas"
$app['templating'] = function(){
    // Proporcionar el path donde se encuentran las plantillas
    $loader = new FilesystemLoader(array(
        // Suponiendo que tienes las plantillas dentro
        // the ./yourproject/phptemplates/ directory:
        // Nota: %name% necesita estar al final de la ruta
        __DIR__ . '/../phptemplates/%name%'
    ));

    $templating = new PhpEngine(new TemplateNameParser(), $loader);

    return $templating;
}; 

3. Uso del motor de plantillas PHP

La lógica con el motor de plantillas PHP sigue siendo la misma, devuelve el resultado del método de representación que espera como primer argumento el nombre del archivo php que desea representar y como segundo argumento una matriz con el nombre y valor de las variables que quiero pasar a la vista:

// Registrar la ruta del índice
$app->get('/', function () use ($app) {

    // Utilice el motor de plantillas PHP para representar el archivo PHP
    // la ruta del archivo sería originalmente:
    // ./project/phptemplates/index.html.php
    return $app['templating']->render('index.html.php', array(
        "name" => "Carlos"
    ));
})->bind('homepage');

Considerando que el contenido de nuestro archivo index.html.php es el siguiente código:

<?php
    echo "Bienvenido $name!";
?>

Una vez que accedas a tu aplicación en la ruta de índice, encontrarás "¡Bienvenido Carlos!" como respuesta. Ten en cuenta que el motor de plantillas PHP de Symfony ofrece muchas características como la implementación de diseños, ranuras y escape automático, así que asegúrate de leer más sobre el componente en el sitio web oficial de Symfony aquí.

Que te diviertas ❤️!


Ingeniero de Software Senior en EPAM Anywhere. Interesado en la programación desde los 14 años, Carlos es un programador autodidacta, fundador y autor de la mayoría de los artículos de Our Code World.

Conviertete en un programador más sociable

Patrocinadores