【问题标题】:render raw HTML in a Symfony controller在 Symfony 控制器中渲染原始 HTML
【发布时间】:2013-09-23 19:21:01
【问题描述】:

我想在 symfony 控制器中将模板渲染为字符串并避免转义。 我不想阻止树枝在全球范围内逃逸。 在模板本身中应用|raw 过滤器,但来自控制器。

我想像

$rendered_unescaped = $this->container->get('templating')
        ->render($templatehere, $paramshere, 
           array('autoescape'=>false));

顺便说一句,我一厢情愿地尝试了前一个,确实没有运气。

当我想将 html 块添加到 ajax json 响应并意识到我正在获取 htmlentities 时,这需要出现。

谢谢, 哈维尔

【问题讨论】:

  • 你确定吗,字符串被twig而不是javascript转义
  • 我认为你是对的。我已经进一步测试,实际上并没有在 symfony 方面逃脱。认为我应该删除该帖子。
  • 离开这个帖子,我在错误地使用 jQuery .text() 而不是 .html() 后正在查看相同的内容 ...

标签: symfony twig


【解决方案1】:

你可以使用autoescape标签

{
    "foo": {
        "html": "{% autoescape false %}<p>Yo, <span>{{ name }}</span>, I'm real happy for you, and Imma let you finish...</p>{% endautoescape %}"
    }
}

另外,我还没有对此进行测试,但您可以更改 Twig 模板的默认策略。

$this->container->get('templating')->getExtension('escaper')->setDefaultStrategy(false);

【讨论】:

  • 谢谢亚当。在第一个选项中,您必须编辑模板(所以没有我想要的)。我已经测试了第二个。出现错误,但如果您将“模板”更改为“树枝”,则已修复。仍然对我不起作用......因为我害怕我可能错误地定位了问题。现在我认为是在js方面。对不起:-(。我的错
  • @javigzz 没问题,反正我确实学到了一些东西;)
猜你喜欢
  • 2012-12-16
  • 2015-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多