我有一个变量,假设是:$ menustr;这个变量包含代码html和一些树枝部分,例如:
$menustr .= '<li><a href="{{ path("'. $actual['direccion'] .'") }}" >'. $actual['nombre'] .'</a></li>';
我需要浏览器使用代码html和在这个momen中的twig部分是“{{path(~~~~~)}}”
我发送一个返回,我发送名为“$ menustr”的变量,并在使用html代码的expresion“raw”后,但这不会使twig代码生效 .
这是回报:
return $this->render('::menu.html.twig', array('menu' => $menustr));
这是模板内容:
{{ menu | raw }}
3 回答
Twig无法渲染包含树枝的字符串 . 在Twig1中没有类似
eval
函数的东西..你可以做的是将路径逻辑移动到PHP的东西 .
router
服务可以生成URL,就像path
twig函数一样 . 如果您在扩展基础Controller
的控制器中,您只需使用generateUrl
:此外,在Symfony中使用菜单时,我建议您查看KnpMenuBundle .
编辑:1 . 正如@PepaMartinec指出的那样,有一个函数可以做到这一点,它被称为
template_from_string
您可以使用template_from_string函数渲染存储在变量中的Twig模板 .
检查这个包:https://github.com/LaKrue/TwigstringBundle这个Bundle增加了使用Symfony2原生Twig模板引擎呈现字符串而不是文件的可能性:
在你的情况下,我会: