Flight はデフォルトでいくつかの基本的なテンプレート機能を提供します。
より複雑なテンプレートが必要な場合は、カスタムビュー セクションの Smarty と Latte の例を参照してください。
ビューテンプレートを表示するには、テンプレートファイルの名前とオプションのテンプレートデータを使用して render メソッドを呼び出します:
render
Flight::render('hello.php', ['name' => 'Bob']);
渡すテンプレートデータは自動的にテンプレートに注入され、ローカル変数のように参照できます。テンプレートファイルは単純に PHP ファイルです。hello.php テンプレートファイルの内容が次のような場合:
hello.php
Hello, <?= $name ?>!
出力は次のようになります:
Hello, Bob!
また、set メソッドを使用してビュー変数を手動で設定することもできます:
set
Flight::view()->set('name', 'Bob');
変数 name はこれ以降すべてのビューで使用できます。そのため、単に次のように行うことができます:
name
Flight::render('hello');
render メソッドでテンプレートの名前を指定する際に、.php 拡張子を省略することができる点に注意してください。
.php
Flight はデフォルトでテンプレートファイルのための views ディレクトリを探します。テンプレートの代替パスを設定するには、次の構成を設定してください:
views
Flight::set('flight.views.path', '/path/to/views');
ウェブサイトには交換可能なコンテンツを持つ単一のレイアウトテンプレートファイルがあることが一般的です。使用するコンテンツをレイアウトにレンダリングするには、render メソッドにオプションのパラメータを渡すことができます。
Flight::render('header', ['heading' => 'Hello'], 'headerContent'); Flight::render('body', ['body' => 'World'], 'bodyContent');
その後、headerContent と bodyContent と呼ばれる保存された変数を持つビューがあります。そうすることで、次のようにレイアウトをレンダリングできます:
headerContent
bodyContent
Flight::render('layout', ['title' => 'ホームページ']);
テンプレートファイルが次のようになっている場合:
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> <?= $headerContent ?> <?= $bodyContent ?> </body> </html>
<html> <head> <title>ホームページ</title> </head> <body> <h1>Hello</h1> <div>World</div> </body> </html>
Flight では、独自のビュークラスを登録することでデフォルトのビューエンジンを簡単に入れ替えることができます。
ビューに Smarty テンプレートエンジンを使用する方法は次のとおりです:
// Smarty ライブラリをロードします require './Smarty/libs/Smarty.class.php'; // ビュークラスとして Smarty を登録します // また、Smarty のロード時に設定するためのコールバック関数を渡します Flight::register('view', Smarty::class, [], function (Smarty $smarty) { $smarty->setTemplateDir('./templates/'); $smarty->setCompileDir('./templates_c/'); $smarty->setConfigDir('./config/'); $smarty->setCacheDir('./cache/'); }); // テンプレートデータを割り当てます Flight::view()->assign('name', 'Bob'); // テンプレートを表示します Flight::view()->display('hello.tpl');
完全性のために、Flight のデフォルトの render メソッドを上書きする必要があります:
Flight::map('render', function(string $template, array $data): void { Flight::view()->assign($data); Flight::view()->display($template); });
ビューに Latte テンプレートエンジンを使用する方法は次のとおりです:
// ビュークラスとして Latte を登録します // また、Latte のロード時に設定するためのコールバック関数を渡します Flight::register('view', Latte\Engine::class, [], function (Latte\Engine $latte) { // ここが Latte がテンプレートをキャッシュする場所です // Latte の素晴らしいところの1つは、テンプレートを変更すると自動的にキャッシュを更新することです! $latte->setTempDirectory(__DIR__ . '/../cache/'); // Latte にとってビューのルートディレクトリがどこにあるかを教えてください。 $latte->setLoader(new \Latte\Loaders\FileLoader(__DIR__ . '/../views/')); }); // ラップして Flight::render() を正しく使用できるようにします Flight::map('render', function(string $template, array $data): void { // これは $latte_engine->render($template, $data); のようなものです echo Flight::view()->render($template, $data); });