El componente Templating

El componente Templating proporciona todas las herramientas necesarias para construir cualquier tipo de sistema de plantillas.

Este proporciona una infraestructura para cargar los archivos de plantilla y opcionalmente controlar sus cambios. También proporciona una implementación del motor de plantillas concreto usando PHP con herramientas adicionales para escapar y separar plantillas en bloques y diseños.

Instalando

Puedes instalar el componente de varias maneras diferentes:

Usando

La clase Symfony\Component\Templating\PhpEngine es el punto de entrada del componente. Este necesita un analizador de nombres de plantilla (Symfony\Component\Templating\TemplateNameParserInterface) para convertir un nombre de plantilla a una referencia a la plantilla y cargador de plantilla (Symfony\Component\Templating\Loader\LoaderInterface) para encontrar la plantilla asociada a una referencia:

use Symfony\Component\Templating\PhpEngine;
use Symfony\Component\Templating\TemplateNameParser;
use Symfony\Component\Templating\Loader\FilesystemLoader;

$loader = new FilesystemLoader(__DIR__ . '/views/%name%');

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

echo $view->render('hello.php', array('firstname' => 'Fabien'));

El método render() ejecuta el archivo views/hello.php y devuelve el texto producido.

<!-- views/hello.php -->
Hello, <?php echo $firstname ?>!

Herencia de plantillas con ranuras

La herencia de plantillas está diseñada para compartir diseños con muchas plantillas.

<!-- views/layout.php -->
    <html>
        <head>
        <title><?php $view['slots']->output('title', 'Default title') ?></title>
        </head>
        <body>
        <?php $view['slots']->output('_content') ?>
    </body>
</html>

El método extend() es llamado en la subplantilla para definir la plantilla padre.

<!-- views/page.php -->
<?php $view->extend('layout.php') ?>

<?php $view['slots']->set('title', $page->title) ?>

<h1>
    <?php echo $page->title ?>
</h1>
<p>
    <?php echo $page->body ?>
</p>

Para usar la herencia de plantillas, debes registrar la clase ayudante Symfony\Component\Templating\Helper\SlotsHelper:

use Symfony\Component\Templating\Helper\SlotsHelper;

$view->set(new SlotsHelper());

// Retrieve page object
$page = ...;

echo $view->render('page.php', array('page' => $page));

Nota

Es posible la herencia multinivel: un diseño puede extender a otro.

Mecanismo de escape

Esta documentación todavía se está escribiendo.

El ayudante Asset

Esta documentación todavía se está escribiendo.

Bifúrcame en GitHub