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 應設定為某個 '路徑/快取',以儲存已編譯模板(如此可避免每次要求都重新編譯)。更多資訊,請參閱 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 是一個參考至 \Slim\Views\Twig 執行個體,由 fromRequest method 回傳。\Slim\Views\Twig 執行個體的 render() method 接受一個 PSR-7 回應物件作為其第一個參數、Twig 範本路徑作為其第二個參數,以及一個範本變數陣列作為其最後一個參數。 render() method 回傳一個新的 PSR-7 回應物件,其主體是呈像後的 Twig 範本。

在專案根目錄建立一個目錄: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() method

slim/twig-view 這個元件公開一個客製 url_for() 函式給您的 Twig 範本。您可以使用此函式針對 Slim 應用程式中的任何命名路徑,產生完整的 URL。url_for() 函式接受兩個參數

  1. 路徑名稱
  2. 一個路徑佔位符名稱和取代值的 hash

這個第二個參數的鍵應該對應所選取的路徑的模式佔位符。這是一個範例 Twig 範本,其會描繪上述範例 Slim 應用程式中所顯示的 "profile" 命名路徑的連結 URL。


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

了解更多