使用 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>
slim/twig-view
组件将自定义 url_for()
函数显示到您的 Twig 模板。您可以使用此函数生成到 Slim 应用程序中任何已命名路由的完整 URL。 url_for()
函数接受两个参数。
第二个参数的键应该与所选路由的模式占位符相对应。这是一个示例 Twig 模板,它绘制了上面示例 Slim 应用程序中所示的“个人资料”命名路由的链接 URL。
<a href="{{ url_for('profile', { 'name': 'josh' }) }}">Josh</a></li>