2017-06-08 11 views
0

私はラテックスファイルを生成するよりも小枝テンプレートを持っています。 htmlのためにエスケープされた文字を発行する点を除いて、正常に動作します。小枝のカスタムラテックスエスケープを作成

たとえば、DBは文字列Rosie & Jimを返します。

これは、Rosie & Jimです。

ラテックスについては、実際に\&と表示するには&が必要です。

は、したがって、私はここに述べたように、私はラテックスのカスタムエスケーが必要だと思う:それは小枝に来るときhttps://twig.sensiolabs.org/doc/2.x/filters/escape.html#custom-escapers

しかし、私は少し緑だとどこでも実際escapersのいずれかの例を見つけることができません。誰でも知っていますか:

a)これは私が実際に必要なものですか?

b)私が実際に作る必要があるのは何ですか?

+0

おそらく['{{latex | raw}}'](https://twig.sensiolabs.org/doc/2.x/filters/raw.html)が必要です。 'latex'はTwigテンプレート変数です。 –

+0

@ JaredFarrishこれは生のデータを出力するだけです。私はまだそれを逃げるために必要です、ちょっと違う。 – benoliver999

+1

https://github.com/bobvandevijver/latex-bundle/blob/master/Twig/BobVLatexExtension.php –

答えて

0

右のように、サービスとして設定し、必要に応じてコントローラから呼び出すようになりました。

ベストプラクティスであるかどうかはわかりませんが、それは私には役立ちます。そして

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エスケープの完全な例が掲載されています。