Twitter bootstrap 3 数据属性内的细枝变量
为了将一些内容传递到引导模式,我遇到了一个在数据属性中带有过滤器的twig变量的问题。问题在于过滤器混淆了电子邮件,从而更改了变量的内容: 我的代码: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>
{% 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知道它?上面的类位于您提到的包中。如果您想快速修复,您只需找到正确的文件并自行进行调整。