Twig字符串渲染和Symfony扩展

时间:2014-04-24 11:21:40

标签: symfony twig

我在Symfony2项目中使用twig来渲染模板变量:

$env = new \Twig_Environment(new \Twig_Loader_String());
$render = $env->render(
    $renderString,
    $params
);

但是当我尝试使用Symfony twig函数(例如'path','url','asset','controller'等)时,会抛出异常“函数”路径“不存在于......” 。 有可能将此函数注入Twig_Environment吗?

2 个答案:

答案 0 :(得分:7)

此方法无需克隆树枝环境即可工作:(在symfony 3中测试)

$rendered = $this->get('twig')
    ->createTemplate('Hi {{ name }}!')
    ->render(['name' => 'simon']);

path这样的Symfony扩展可以像请求一样工作。

答案 1 :(得分:6)

试试这个:

$twig = clone $this->get('twig');
$twig->setLoader(new \Twig_Loader_String());
$rendered = $twig->render(
    "Test string template: {{ result|humanize }}",
    array("result" => "mega_success")
);

比照How to render a string as a Twig template in Symfony2