Flight proporciona por defecto alguna funcionalidad básica de plantillas.
Si necesita necesidades de plantillas más complejas, consulte los ejemplos de Smarty y Latte en la sección de Vistas Personalizadas.
Para mostrar una plantilla de vista, llame al método render con el nombre del archivo de la plantilla y datos de plantilla opcionales:
render
Flight::render('hello.php', ['name' => 'Bob']);
Los datos de plantilla que pasa se inyectan automáticamente en la plantilla y se pueden hacer referencia como una variable local. Los archivos de plantilla son simplemente archivos PHP. Si el contenido del archivo de plantilla hello.php es:
hello.php
¡Hola, <?= $name ?>!
La salida sería:
¡Hola, Bob!
También puede establecer manualmente las variables de vista utilizando el método set:
Flight::view()->set('name', 'Bob');
La variable name ahora está disponible en todas sus vistas. Entonces simplemente puede hacer:
name
Flight::render('hello');
Tenga en cuenta que al especificar el nombre de la plantilla en el método de representación, puede omitir la extensión .php.
.php
De forma predeterminada, Flight buscará un directorio views para archivos de plantilla. Puede establecer una ruta alternativa para sus plantillas configurando lo siguiente:
views
Flight::set('flight.views.path', '/ruta/a/views');
Es común que los sitios web tengan un solo archivo de plantilla de diseño con contenido intercambiable. Para renderizar contenido que se utilizará en un diseño, puede pasar un parámetro opcional al método render.
Flight::render('header', ['heading' => 'Hola'], 'headerContent'); Flight::render('body', ['body' => 'Mundo'], 'bodyContent');
Entonces su vista tendrá variables guardadas llamadas headerContent y bodyContent. Luego puede renderizar su diseño haciendo:
headerContent
bodyContent
Flight::render('layout', ['title' => 'Página de inicio']);
Si los archivos de plantilla se ven así:
header.php:
header.php
<h1><?= $heading ?></h1>
body.php:
body.php
<div><?= $body ?></div>
layout.php:
layout.php
<html> <head> <title><?= $title ?></title> </head> <body> <?= $heaterContent ?> <?= $bodyContent ?> </body> </html>
<html> <head> <title>Página de inicio</title> </head> <body> <h1>Hola</h1> <div>Mundo</div> </body> </html>
Flight le permite cambiar el motor de vista predeterminado simplemente registrando su propia clase de vista.
Así es como usaría el Smarty motor de plantillas para sus vistas:
// Cargar biblioteca de Smarty require './Smarty/libs/Smarty.class.php'; // Registrar Smarty como la clase de vista // También pase una función de devolución de llamada para configurar Smarty al cargar Flight::register('view', Smarty::class, [], function (Smarty $smarty) { $smarty->setTemplateDir('./templates/'); $smarty->setCompileDir('./templates_c/'); $smarty->setConfigDir('./config/'); }); // Asignar datos de plantilla Flight::view()->assign('name', 'Bob'); // Mostrar la plantilla Flight::view()->display('hello.tpl');
Para completar, también debe anular el método de representación predeterminado de Flight:
Flight::map('render', function(string $template, array $data): void { Flight::view()->assign($data); Flight::view()->display($template); });
Así es como usaría el Latte motor de plantillas para sus vistas:
// Registrar Latte como la clase de vista // También pase una función de devolución de llamada para configurar Latte al cargar Flight::register('view', Latte\Engine::class, [], function (Latte\Engine $latte) { // Aquí es donde Latte almacenará en caché sus plantillas para acelerar las cosas // ¡Una característica interesante de Latte es que actualiza automáticamente su // caché cuando realiza cambios en sus plantillas! $latte->setTempDirectory(__DIR__ . '/../cache/'); // Indique a Latte dónde estará el directorio raíz de sus vistas. $latte->setLoader(new \Latte\Loaders\FileLoader(__DIR__ . '/../views/')); }); // Y envuélvalo para que pueda usar Flight::render() correctamente Flight::map('render', function(string $template, array $data): void { // Esto es como $latte_engine->render($template, $data); echo Flight::view()->render($template, $data); });