php - 从 Twig 扩展渲染模板

标签 php symfony dependency-injection twig

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

最佳答案

您可以定义扩展,使其需要环境。 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)
{
    // ...
}

关于php - 从 Twig 扩展渲染模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9549026/

相关文章:

php - Symfony CLI 参数由 PHP 解释

c# - 使用 Ninject 2 构造函数注入(inject)

dependency-injection - 重用 CaSTLe Windsor 安装程序的注册?

php - mysql查询结果分组

php - 当我只想输出一行时,MYSQL/PHP 输出整个表

php - Symfony3 : How to set multiple connections?

code-generation - 无法覆盖 Symfony2 GeneratorBundle 中的标准骨架 View

安卓错误 "android.app.Application does not implement dagger.android.HasActivityInjector"

php - 可以使用 width=device-width 和元名称 ="viewport"内容 ="width=1024"吗?

php - 无法使用 PHP exec 命令和 NirCmd 控制音量