数据属性

时间:2018-06-13 15:17:21

标签: twitter-bootstrap-3 modal-dialog twig

我有一个twig变量的问题,在data-属性中有一个过滤器,以便将一些内容传递给bootstrap模式。问题是过滤器obfuscateEmail会更改变量的内容:https://github.com/Propaganistas/Email-Obfuscator#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 %}

我已经试图逃避它而没有任何成功。问题总是相同的html代码是错误的,因为来自obfuscateEmail过滤器的变量中的引号或模态不会工作或显示纯html。

1 个答案:

答案 0 :(得分:0)

问题在于插件将输出标记为安全,从而返回有效的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;
        }
    }