此 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>
slim/twig-view
這個元件公開一個客製 url_for()
函式給您的 Twig 範本。您可以使用此函式針對 Slim 應用程式中的任何命名路徑,產生完整的 URL。url_for()
函式接受兩個參數
這個第二個參數的鍵應該對應所選取的路徑的模式佔位符。這是一個範例 Twig 範本,其會描繪上述範例 Slim 應用程式中所顯示的 "profile" 命名路徑的連結 URL。
<a href="{{ url_for('profile', { 'name': 'josh' }) }}">Josh</a></li>