更新: Twig-View已达到稳定版本,文档已更新以解决 Slim 4 集成问题。
如果您仍在使用不稳定版本的 Twig-View,请考虑升级。
首先,您需要将 Twig-View 包添加到您的项目中:
composer require slim/twig-view
并假设以下目录结构:
composer.json
cache/
public/
|--index.php
templates/
|--hello.twig
vendor/
|--autoload.php
以下是两个工作示例:
如果您使用容器(根据Slim 4 文档是可选的),您可以将 Tiwg 创建定义添加到容器中,并在需要时使用它。(我php-di/php-di
在这个例子中使用,但你可以使用任何 PSR 兼容的依赖容器。)
index.php,使用容器:
<?php
use DI\Container;
use Slim\Factory\AppFactory;
use Slim\Views\Twig;
use Slim\Views\TwigMiddleware;
require __DIR__ . '/../vendor/autoload.php';
// Create Container
$container = new Container();
AppFactory::setContainer($container);
// Set view in Container
$container->set('view', function() {
return Twig::create(__DIR__ . '/../templates',
['cache' => __DIR__ . '/../cache']);
});
// Create App
$app = AppFactory::create();
// Add Twig-View Middleware
$app->add(TwigMiddleware::createFromContainer($app));
// Example route
$app->get('/hello/{name}', function ($request, $response, $args) {
return $this->get('view')->render($response, 'hello.twig', [
'name' => $args['name']
]);
});
// Run the app
$app->run();
您也可以跳过容器创建,但在这种情况下,您需要在尝试呈现模板之前创建 Twig 实例。
index.php,没有容器:
<?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' => __DIR__ . '/../cache']);
// Add Twig-View Middleware
$app->add(TwigMiddleware::create($app, $twig));
// Example route
// Please note how $view is created from the request
$app->get('/hello/{name}', function ($request, $response, $args) {
$view = Twig::fromRequest($request);
return $view->render($response, 'hello.twig', [
'name' => $args['name']
]);
});
// Run the app
$app->run();
你好。树枝:
Hello {{ name }}
现在尝试/hello/slim4
在浏览器中访问,输出将是:
你好苗条4