从树枝扩展呈现模板对于旧版本的 Twig

2022-08-30 23:53:27

我构建了一个树枝扩展来做一些事情,其中之一就是渲染一个模板。如何从树枝扩展内部访问引擎环境并调用 Render 方法?


答案 1

您可以定义扩展,以便它需要环境。Twig 会自动将其传递给函数。

use Twig\Environment;
use Twig\TwigFunction;

public function getFunctions()
{
    return [
        new TwigFunction(
            'myfunction',
            [$this, 'myFunction'],
            ['needs_environment' => true]
        ),
    ];
}

public function myFunction(Environment $environment, string $someParam)
{
    // ...
}

对于旧版本的 Twig

public function getFunctions()
{
    return array(
        new \Twig_SimpleFunction(
            'myfunction',
            array($this, 'myFunction'),
            array('needs_environment' => true)
        ),
    );
}

public function myFunction(\Twig_Environment $environment, string $someParam)
{
    // ...
}

答案 2

使用此功能,用户可以将树枝环境实例传递给树枝扩展

private $environment;

public function initRuntime(\Twig_Environment $environment)
{
    $this->environment = $environment;
}

推荐