2012-03-09 13 views
18

stworzyłem niestandardowy znacznik, który powinien działać tak:Symfony2/Gałązka: jak powiedzieć tag zwyczaj gałązka aby nie uciec wyjście

{{ thumbnail(image.fullPath,620) }} 

niestety muszę używać go tak

{{ thumbnail(image.fullPath,620)|raw }} 

Czy istnieje sposób na unescape bezpośrednio w rozszerzeniu gałązka?

Moja przedłużenie rejestruje kod miniatury tak:

public function getFunctions() 
    { 
     return array(
      'thumbnail' => new \Twig_Function_Method($this, 'thumbnail'), 
     ); 
    } 

Odpowiedz

57

Trzeci argument Twig_Function_Method::__construct() jest tablicą opcje dla tej funkcji. Jedną z tych opcji jest is_safe który określa, czy wyjścia funkcyjne „bezpieczne” HTML/kod JavaScript:

public function getFunctions() 
{ 
    return array(
     'thumbnail' => new \Twig_Function_Method($this, 'thumbnail', array(
      'is_safe' => array('html') 
     )) 
    ); 
} 
+0

Dzięki za to. Czy jest to określone w dokumentacji? Nie mogłem go znaleźć, ale może nie wyglądałem wystarczająco mocno. –

+1

@StephenOrr patrz link w odpowiedzi Crozina. – acme

+0

dziękuję, pomógł mi $) możesz dodać link do instrukcji do tego? chcesz wiedzieć, co może być więcej niż opcji "html" – user1954544

3

Gałązka robi to tak:

class Twig_Extension_Escaper extends Twig_Extension 
{ 
... 
    public function getFilters() 
    { 
     return array(
      new Twig_SimpleFilter('raw', 'twig_raw_filter', array('is_safe' => array('all'))), 
     ); 
    } 
... 
} 
... 

function twig_raw_filter($string) 
{ 
    return $string; 
} 
8

Crozin's answer jest poprawna, ale ponieważ \Twig_Function_Method jest teraz przestarzała można użyj \Twig_SimpleFunction jako takiego:

return [ 
    new \Twig_SimpleFunction('thumbnail', [$this, 'thumbnail'], [ 
     'is_safe' => ['html'] 
    ]), 
]; 
Powiązane problemy