Twitter bootstrap 3 数据属性内的细枝变量

Twitter bootstrap 3 数据属性内的细枝变量,twitter-bootstrap-3,modal-dialog,twig,Twitter Bootstrap 3,Modal Dialog,Twig,为了将一些内容传递到引导模式,我遇到了一个在数据属性中带有过滤器的twig变量的问题。问题在于过滤器混淆了电子邮件,从而更改了变量的内容: 我的代码: {% for i in 1..20 %} <a data-content="{{ _context['content_' ~ i ~ '_raw']|obfuscateEmail }}" data-toggle="modal" href="#modal" class="btn btn-primary">...</a>

为了将一些内容传递到引导模式,我遇到了一个在数据属性中带有过滤器的twig变量的问题。问题在于过滤器混淆了电子邮件,从而更改了变量的内容:

我的代码:

{% for i in 1..20 %}
    <a data-content="{{ _context['content_' ~ i ~ '_raw']|obfuscateEmail }}" data-toggle="modal" href="#modal" class="btn btn-primary">...</a>
{% endfor %}
{1..20%中的i的%
{%endfor%}

我已经试过逃避,但没有成功。问题总是一样的,要么html代码错误,因为变量中的引号来自模糊的电子邮件过滤器,要么modal无法工作或显示纯html。

问题在于插件将输出标记为安全,从而返回有效的
html
,这破坏了
html

您可以调整扩展以满足您的需要

<?php 
    namespace Propaganistas\EmailObfuscator\Twig;

    use Twig_Extension;
    use Twig_SimpleFilter;

    class Extension extends Twig_Extension
    {
        /**
         * Returns the name of the extension.
         *
         * @return string The extension name
         */
        public function getName()
        {
            return 'propaganistas.emailObfuscator';
        }
        /**
         * Returns a list of filters to add to the existing list.
         *
         * @return array An array of filters
         */
        public function getFilters()
        {
            return array(
                new Twig_SimpleFilter(
                    'obfuscateEmail',
                    array($this, 'parse')
                ),
            );
        }
        /**
         * Twig filter callback.
         *
         * @return string Filtered content
         */
        public function parse($content, $is_safe = false)
        {
            $content = obfuscateEmail($content);
            return $is_safe ? new Twig_Markup($content, 'UTF-8') : $content;
        }
    }

谢谢-听起来很有希望。在哪里创建扩展名PHP文件以及如何命名?我必须将其注册为某种服务,还是必须明确地让Propaganistas\EmailObfuscator知道它?上面的类位于您提到的包中。如果您想快速修复,您只需找到正确的文件并自行进行调整。