Latte es un motor de plantillas completo que es muy fácil de usar y se siente más cercano a una sintaxis de PHP que Twig o Smarty. También es muy fácil de extender y agregar tus propios filtros y funciones.
Instalar con composer.
composer require latte/latte
Hay algunas opciones de configuración básicas para comenzar. Puedes leer más sobre ellas en la Documentación de Latte.
use Latte\Engine as LatteEngine; require 'vendor/autoload.php'; $app = Flight::app(); $app->register('latte', LatteEngine::class, [], function(LatteEngine $latte) use ($app) { // Aquí es donde Latte almacenará en caché tus plantillas para acelerar las cosas // ¡Una cosa genial sobre Latte es que actualiza automáticamente tu caché // cuando realizas cambios en tus plantillas! $latte->setTempDirectory(__DIR__ . '/../cache/'); // Indica a Latte dónde estará el directorio raíz de tus vistas. // $app->get('flight.views.path') se establece en el archivo config.php // También podrías hacer algo como `__DIR__ . '/../views/'` $latte->setLoader(new \Latte\Loaders\FileLoader($app->get('flight.views.path'))); });
Aquí tienes un ejemplo simple de un archivo de diseño. Este es el archivo que se utilizará para envolver todas tus otras vistas.
<!-- app/views/layout.latte --> <!doctype html> <html lang="es"> <head> <title>{$title ? $title . ' - '}Mi App</title> <link rel="stylesheet" href="style.css"> </head> <body> <header> <nav> <!-- tus elementos de navegación aquí --> </nav> </header> <div id="content"> <!-- Aquí está la magia --> {block content}{/block} </div> <div id="footer"> © Derechos de Autor </div> </body> </html>
Y ahora tenemos tu archivo que se va a renderizar dentro de ese bloque de contenido:
<!-- app/views/home.latte --> <!-- Esto le dice a Latte que este archivo está "dentro" del archivo layout.latte --> {extends layout.latte} <!-- Este es el contenido que se renderizará dentro del diseño dentro del bloque de contenido --> {block content} <h1>Página de Inicio</h1> <p>¡Bienvenido a mi app!</p> {/block}
Luego, cuando vayas a renderizar esto dentro de tu función o controlador, harías algo así:
// ruta simple Flight::route('/', function () { Flight::latte()->render('home.latte', [ 'title' => 'Página de Inicio' ]); }); // o si estás usando un controlador Flight::route('/', [HomeController::class, 'index']); // HomeController.php class HomeController { public function index() { Flight::latte()->render('home.latte', [ 'title' => 'Página de Inicio' ]); } }
¡Consulta la Documentación de Latte para obtener más información sobre cómo utilizar Latte al máximo!