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\Slim\Views\Twig 实例的引用,该实例由 fromRequest 方法返回。 \Slim\Views\Twig 实例的 render() 方法将 PSR-7 响应对象作为其第一个参数、Twig 模板路径作为其第二个参数、模板变量数组作为其最后一个参数。 render() 方法返回一个新的 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() 方法

slim/twig-view 组件将自定义 url_for() 函数显示到您的 Twig 模板。您可以使用此函数生成到 Slim 应用程序中任何已命名路由的完整 URL。 url_for() 函数接受两个参数。

  1. 路由名称
  2. 路由占位符名称和替换值

第二个参数的键应该与所选路由的模式占位符相对应。这是一个示例 Twig 模板,它绘制了上面示例 Slim 应用程序中所示的“个人资料”命名路由的链接 URL。


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

更多信息