【问题标题】:Twig: How can I manually escape inside a custom function?Twig:如何在自定义函数中手动转义?
【发布时间】:2015-01-22 19:40:41
【问题描述】:

我编写了自己的输出 HTML 的 Twig 函数,因此我将 is_safe 设置为 html,以便 Twig 知道不要逃避我的函数的输出。

但是,我的函数需要参数。其中一个参数直接放在输出中。我想在输出之前转义它。所以看来我只需要能够在输出之前手动转义选项值。

我找不到如何做到这一点。有人知道吗?

【问题讨论】:

  • 你能提供一些代码吗?

标签: symfony twig


【解决方案1】:

诀窍是存储 twig 环境,然后将其传递给 twig_escape_filter

class TournExtension extends \Twig_Extension
{
    protected $env;

    public function initRuntime(\Twig_Environment $env)
    {
        parent::initRuntime($env);
        $this->env = $env;
    }
    protected function escape($string)
    {
        return twig_escape_filter($this->env,$string);
    }

【讨论】:

  • 是的,就是这样。我希望pre_escape 也能转义输入参数,但在a simple test 之后,不,它只会转义过滤器的输入。很高兴知道。
  • 在twig dogs中简要提到twig函数不支持pre_escapetwig.sensiolabs.org/doc/advanced.html#functions
  • 我可能应该指出我不再使用张贴的转义功能。我发现在 twig 扩展中生成 html 会使我的代码更难维护。考虑使用模板来生成 html。
猜你喜欢
  • 2012-10-27
  • 2020-11-09
  • 2019-02-22
  • 1970-01-01
  • 1970-01-01
  • 2019-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多