Twigテンプレート

slim/twig-view コンポーネント

Twig-View PHPコンポーネントは、アプリケーションでTwigテンプレートをレンダリングするのに役立ちます。このコンポーネントはPackagistで入手でき、Composerを使って簡単にインストールできます。

インストール

composer require slim/twig-view

使用方法

次に、Slimアプリにミドルウェアを追加する必要があります。

<?php

use Slim\Factory\AppFactory;
use Slim\Views\Twig;
use Slim\Views\TwigMiddleware;

require __DIR__ . '/../vendor/autoload.php';

// Create App
$app = AppFactory::create();

// Create Twig
$twig = Twig::create(__DIR__ . '/../templates', ['cache' => false]);

// Add Twig-View Middleware
$app->add(TwigMiddleware::create($app, $twig));

注意: 本番環境では、コンパイル済みテンプレートを保存するために(リクエストごとに再コンパイルされないように)、cache'path/to/cache' に設定する必要があります。詳細については、Twig 環境オプションを参照してください。

これで、アプリルート内でslim/twig-viewコンポーネントサービスを使用して、テンプレートをレンダリングし、PSR-7レスポンスオブジェクトに書き込むことができます。

$app->get('/', function ($request, $response) {
    $view = Twig::fromRequest($request);
    
    return $view->render($response, 'home.html.twig', [
        'name' => 'John',
    ]);
});

// Run app
$app->run();

この例では、ルートコールバック内で呼び出される$view は、fromRequest メソッドによって返される \Slim\Views\Twig インスタンスへの参照です。\Slim\Views\Twig インスタンスの render() メソッドは、最初の引数としてPSR-7レスポンスオブジェクト、2番目の引数としてTwigテンプレートパス、最後の引数としてテンプレート変数の配列を受け取ります。render() メソッドは、レンダリングされたTwigテンプレートをボディとする新しいPSR-7レスポンスオブジェクトを返します。

プロジェクトルートに templates/ ディレクトリを作成します。

templatesディレクトリ内にTwigテンプレートファイルを作成します: templates/home.html.twig


<!DOCTYPE html>
<html>
<head>
    <title>Welcome to Slim!</title>
</head>
<body>
<h1>Hello {{ name }}</h1>
</body>
</html>

url_for() メソッド

slim/twig-view コンポーネントは、Twigテンプレートにカスタム url_for() 関数を公開します。この関数を使用して、Slimアプリケーション内の任意の名前付きルートへの完全なURLを生成できます。url_for() 関数は2つの引数を受け取ります。

  1. ルート名
  2. ルートプレースホルダー名と置換値のハッシュ

2番目の引数のキーは、選択したルートのパターンプレースホルダーに対応している必要があります。これは、上記のSlimアプリケーションの例に示されている「profile」という名前のルートのリンクURLを描画するTwigテンプレートの例です。


<a href="{{ url_for('profile', { 'name': 'josh' }) }}">Josh</a></li>

続きを読む