右のように、サービスとして設定し、必要に応じてコントローラから呼び出すようになりました。
ベストプラクティスであるかどうかはわかりませんが、それは私には役立ちます。そして
services:
app.latex:
class: AppBundle\FunBundle\Service\Latex
arguments: ['@twig']
コントローラのアクションで:
サービス:アプリケーション/設定/ services.ymlに続い
<?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;
);
}
}
$latexer = $this->get('app.latex');
$latexer->escaper();
そして小枝テンプレート自体で:
{% autoescape 'latex' %}
# latex/twig goes here
{% end autoescape %}
私のサイトにはhereというLaTeXエスケープの完全な例が掲載されています。
おそらく['{{latex | raw}}'](https://twig.sensiolabs.org/doc/2.x/filters/raw.html)が必要です。 'latex'はTwigテンプレート変数です。 –
@ JaredFarrishこれは生のデータを出力するだけです。私はまだそれを逃げるために必要です、ちょっと違う。 – benoliver999
https://github.com/bobvandevijver/latex-bundle/blob/master/Twig/BobVLatexExtension.php –