制作定制乳胶套用于树枝

时间:2017-06-08 23:09:37

标签: php symfony twig

我有一个twig模板而不是生成Latex文件。它工作正常,除了它发出为html转义的字符。

因此,例如,DB返回字符串Rosie & Jim

Twig制作&

对于乳胶我需要\&实际呈现为{{1}}。

因此,我认为我需要一个针对Latex的自定义转义器,如下所述:https://twig.sensiolabs.org/doc/2.x/filters/escape.html#custom-escapers

然而,在谈到树枝时,我有点绿,并且无法在任何地方找到任何实际逃生者的例子。有谁知道:

a)这是我真正需要的吗?

b)我真正需要做些什么呢?

1 个答案:

答案 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转发器的完整示例。