如何通过 Timber 为 Twig 制作自定义转义器?
How can I make a custom escaper for Twig via Timber?
我在 WordPress 中使用 Twig 和 Timber,我想根据 Twig 的文档制作一个 custom escaper。
$twig = new Twig_Environment($loader);
$twig->getExtension('Twig_Extension_Core')->setEscaper('csv', 'csv_escaper');
// before Twig 1.26
$twig->getExtension('core')->setEscaper('csv', 'csv_escaper');
但是,我不确定在使用 Timber 时该怎么做;我在 Timber 中找不到任何关于执行此操作的文档 - 这是否可以不编辑核心文件?
如 documentation 中所示,您可以使用 add_filter
添加转义符,
add_filter( 'timber/twig', function( \Twig_Environment $twig ) {
$twig->getExtension('Twig_Extension_Core')->setEscaper('csv', 'csv_escaper');
return $twig;
} );
在尝试了 DarkBee 的回答后,我最终在一个类似的问题上找到了 ,他们得到了和我一样的错误,在使用下面的代码后,我的自定义过滤器开始工作了:
add_filter('timber/twig', 'blm_add_twig_custom_filters');
function blm_add_twig_custom_filters($twig) {
$twig->addExtension(new Twig_Extension_StringLoader());
$twig->addFilter(new Twig_SimpleFilter('e2', 'escape_no_double'));
return $twig;
}
/* Custom twig/timber escaper so it doesn't double encode html entities */
function escape_no_double($str) {
return htmlspecialchars($str, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8', false);
}
可以找到更多 here。
我在 WordPress 中使用 Twig 和 Timber,我想根据 Twig 的文档制作一个 custom escaper。
$twig = new Twig_Environment($loader);
$twig->getExtension('Twig_Extension_Core')->setEscaper('csv', 'csv_escaper');
// before Twig 1.26
$twig->getExtension('core')->setEscaper('csv', 'csv_escaper');
但是,我不确定在使用 Timber 时该怎么做;我在 Timber 中找不到任何关于执行此操作的文档 - 这是否可以不编辑核心文件?
如 documentation 中所示,您可以使用 add_filter
添加转义符,
add_filter( 'timber/twig', function( \Twig_Environment $twig ) {
$twig->getExtension('Twig_Extension_Core')->setEscaper('csv', 'csv_escaper');
return $twig;
} );
在尝试了 DarkBee 的回答后,我最终在一个类似的问题上找到了
add_filter('timber/twig', 'blm_add_twig_custom_filters');
function blm_add_twig_custom_filters($twig) {
$twig->addExtension(new Twig_Extension_StringLoader());
$twig->addFilter(new Twig_SimpleFilter('e2', 'escape_no_double'));
return $twig;
}
/* Custom twig/timber escaper so it doesn't double encode html entities */
function escape_no_double($str) {
return htmlspecialchars($str, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8', false);
}
可以找到更多 here。