我有一个twig模板而不是生成Latex文件。它工作正常,除了它发出为html转义的字符。
因此,例如,DB返回字符串Rosie & Jim
。
Twig制作&
。
对于乳胶我需要\&
实际呈现为{{1}}。
因此,我认为我需要一个针对Latex的自定义转义器,如下所述:https://twig.sensiolabs.org/doc/2.x/filters/escape.html#custom-escapers
然而,在谈到树枝时,我有点绿,并且无法在任何地方找到任何实际逃生者的例子。有谁知道:
a)这是我真正需要的吗?
b)我真正需要做些什么呢?
答案 0 :(得分:1)
是的,所以我最终将其设置为服务,并在需要时从控制器调用它。
不确定这是否是最佳做法但对我有用。
服务:
<?php
namespace AppBundle\FunBundle\Service;
class Latex
{
public function __construct($twig)
{
$this->twig = $twig;
}
public function escaper()
{
// Get twig env
$twig = $this->twig;
// Start setEscaper called 'latex' - call it what you want
$twig->getExtension('Twig_Extension_Core')->setEscaper('latex',
function($twig, $string, $charset){
// Replace every instance of '&' with '\&'
$string = str_replace("&", "\\&", $string);
}
return $string;
);
}
}
然后在app / config / services.yml:
services:
app.latex:
class: AppBundle\FunBundle\Service\Latex
arguments: ['@twig']
然后在控制器动作中:
$latexer = $this->get('app.latex');
$latexer->escaper();
在树枝模板中:
{% autoescape 'latex' %}
# latex/twig goes here
{% end autoescape %}
结束在我的网站上写下here,其中包含一个LaTeX转发器的完整示例。