라떼
라떼는 매우 쉽게 사용할 수 있으며 Twig 또는 Smarty보다 PHP 구문에 가깝게 느껴지는 완전한 기능의 템플릿 엔진입니다. 또한 매우 쉽게 확장하고 자체 필터 및 함수를 추가할 수 있습니다.
설치
컴포저로 설치하세요.
composer require 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->setTempDirectory(__DIR__ . '/../cache/');
// 라떼에게 보기의 루트 디렉터리가 어디에 있는지 알려줍니다.
// $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 . ' - '}My App</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<header>
<nav>
<!-- 여기에 당신의 nav 요소 -->
</nav>
</header>
<div id="content">
<!-- 여기에 마법이 있습니다 -->
{block content}{/block}
</div>
<div id="footer">
© 저작권
</div>
</body>
</html>
이제 해당 콘텐츠 블록 내부에 렌더링될 파일이 있습니다.
<!-- app/views/home.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' => '홈 페이지'
]);
}
}
라떼 문서에서 라떼를 최대한 활용하는 방법에 대해 자세히 알아보세요!