Latte
Latte — це повнофункціональний шаблонний引擎, який дуже простий у використанні і виглядає ближче до синтаксису PHP, ніж Twig або Smarty. Його також дуже легко розширити та додати власні фільтри та функції.
Встановлення
Встановіть за допомогою composer.
composer require latte/latte
Основна конфігурація
Існує кілька основних конфігураційних параметрів для початку роботи. Ви можете дізнатися про них більше в Latte Documentation.
use Latte\Engine as LatteEngine;
require 'vendor/autoload.php';
$app = Flight::app();
$app->register('latte', LatteEngine::class, [], function(LatteEngine $latte) use ($app) {
// Тут Latte буде кешувати ваші шаблони, щоб прискорити процес
// Однією з чудових особливостей Latte є те, що він автоматично оновлює ваш
// кеш, коли ви вносите зміни у ваші шаблони!
$latte->setTempDirectory(__DIR__ . '/../cache/');
// Скажіть Latte, де буде коренева директорія для ваших шаблонів.
// $app->get('flight.views.path') встановлюється у файлі config.php
// Ви також могли б просто зробити щось на кшталт `__DIR__ . '/../views/'`
$latte->setLoader(new \Latte\Loaders\FileLoader($app->get('flight.views.path')));
});
Приклад простого макету
Ось простий приклад файлу макету. Це файл, який буде використано для обгортання всіх інших ваших шаблонів.
<!-- app/views/layout.latte -->
<!doctype html>
<html lang="en">
<head>
<title>{$title ? $title . ' - '}Мій додаток</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<header>
<nav>
<!-- ваші елементи навігації тут -->
</nav>
</header>
<div id="content">
<!-- Тут і є ця магія -->
{block content}{/block}
</div>
<div id="footer">
© Авторські права
</div>
</body>
</html>
А тепер у нас є ваш файл, який буде відображатися всередині цього блоку контенту:
<!-- app/views/home.latte -->
<!-- Це говорить Latte, що цей файл "всередині" файлу layout.latte -->
{extends layout.latte}
<!-- Це контент, який буде відображатися всередині макету в блоці контенту -->
{block content}
<h1>Головна сторінка</h1>
<p>Ласкаво просимо до мого додатку!</p>
{/block}
Отже, коли ви будете відображати це у вашій функції або контролері, ви можете зробити щось на кшталт цього:
// простий маршрут
Flight::route('/', function () {
Flight::latte()->render('home.latte', [
'title' => 'Головна сторінка'
]);
});
// або якщо ви використовуєте контролер
Flight::route('/', [HomeController::class, 'index']);
// HomeController.php
class HomeController
{
public function index()
{
Flight::latte()->render('home.latte', [
'title' => 'Головна сторінка'
]);
}
}
Дивіться Latte Documentation для отримання додаткової інформації про те, як максимально використовувати Latte!