Latte
Latte - это полнофункциональный движок шаблонов, который очень прост в использовании и ближе к синтаксису PHP, чем Twig или Smarty. Также очень легко расширяем и добавляем собственные фильтры и функции.
Установка
Установите с помощью composer.
composer require latte/latte
Основная конфигурация
Есть несколько основных опций конфигурации, с которых можно начать. Вы можете узнать больше о них в Документации по Latte.
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 для получения дополнительной информации о том, как использовать Latte в полной мере!