我按照此处描述的步骤在 Slim https://github.com/slimphp/Twig-View/tree/3.1.0#usage中使用 twig-view但当我尝试时,我在屏幕上收到以下错误使用 TwigExtension 中使用的任何模板函数Fatal error: Uncaught Twig\Error\SyntaxError: Unknown "url_for" function.我已经$ composer require slim/twig-view:^3.0成功运行,我的composer.json文件如下所示"require": { "slim/slim": "4.*", "slim/psr7": "^1.2", "league/container": "^3.3", "slim/twig-view": "^3.0" },这是我的代码require_once __DIR__ . '/../vendor/autoload.php';$container = new \Slim\Factory\Container();\Slim\Factory\AppFactory::setContainer($container);$container->add('view', function () { return \Slim\Views\Twig::create(__DIR__ . '/views', [ 'cache' => false, ]);});$app = \Slim\Factory\AppFactory::create();$app->add(\Slim\Views\TwigMiddleware::createFromContainer($app));require_once __DIR__ . '/../routes.php';// routes.php$app->get('/', function ($request, $response, $args) use ($container) { return $container->get('view')->render($response, 'home.twig', ['foo' => 'test']);})->setName('home');// home.twig...<body> Home {{ foo }} <br> <a href="{{ url_for('about') }}">About</a></body>...如果我从树枝模板中删除 ,url_for则页面可以在浏览器上正常加载。我尝试在我的代码库和供应商文件夹中搜索 TwigExtension,但找不到任何类似的文件。我在这里做错了什么吗?
1 回答
慕侠2389804
TA贡献1719条经验 获得超6个赞
看起来这是因为联盟容器。似乎每次调用函数时都会创建一个新的 Twig 实例,$container->get('view')每次都会返回一个新实例,而不是引用同一个实例。所以解决方法是
$twig = \Slim\Views\Twig::create(__DIR__ . '/views', [
'cache' => false,
]);
$container->add('view', function () use (&$twig) {
return $twig;
});
// Or this instead
$container->add(
'view',
\Slim\Views\Twig::create(__DIR__ . '/views', [
'cache' => false,
])
);
- 1 回答
- 0 关注
- 126 浏览
添加回答
举报
0/150
提交
取消