为了账号安全,请及时绑定邮箱和手机立即绑定

slim/twig-view - TwigExtension 模板函数未指定且工作

slim/twig-view - TwigExtension 模板函数未指定且工作

PHP
喵喔喔 2023-11-03 17:50:11
我按照此处描述的步骤在 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,

    ])

);


查看完整回答
反对 回复 2023-11-03
  • 1 回答
  • 0 关注
  • 126 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信