在我的symfony2动作中,我有:
$twigCode = '<li>{{ data.value }}</li>'; //In database
$datas = array(array( 'value' => 'line 1'), array( 'value' => 'line 2'));
return $this->render(
'...List.html.twig',
array(
'twigCode' => $twigCode,
'datas' => $datas
)
);
在我的树枝模板中,我想要类似的东西:
<ul>
{% for data in data %}
{{ render({{ twigCode }}, {data: data}) }}
{% endfor %}
</ul>
期望:
<ul>
<li>line 1</li>
<li>line 2</li>
</ul>
答案 0 :(得分:3)
您可以在控制器中渲染和连接树枝片段:
$templating = $this->container->get('templating');
$someTwig = '';
foreach ($datas as $data)
{
$someTwig .= $templating->render($twigCode, $data);
}
return $this->render('...List.html.twig', array('someTwig' => $someTwig));
然后在树枝上:
<ul>
{{ someTwig | raw }}
</ul>
否则,如果你真的想在树枝上做这个,你可以写一个实现树枝功能的Custom Twig Extension&#39;渲染&#39;所以像你建议的twig片段会起作用:
在枝条扩展中(您需要将其注册为服务,请参阅上面的链接):
class MyTwigExtension extends \Twig_Extension
{
private $templating;
public function__construct($templating)
{
$this->templating = $templating;
}
public function getFunctions()
{
return array(
'render' => new \Twig_Filter_Method($this, 'render'),
);
}
public function render($twigFragment, array $data)
{
return $this->templating->render($twigFragment, $data);
}
}
然后在树枝上:
<ul>
{% for data in data %}
{{ render(twigCode, data) | raw }}
{% endfor %}
</ul>
注意 - 它可能会'渲染'#39;是树枝的保留字,因此自定义树枝功能可能需要不同的名称。
答案 1 :(得分:1)
您必须使用twig core或者可以自定义视图渲染
检查以下代码
$loader = new Twig_Loader_Array(array(
'index.html' => 'Hello {{ name }}!',
));
$twig = new Twig_Environment($loader);
echo $twig->render('index.html', array('name' => 'Fabien'));
点击此处查看文档:{{3}}