2012-03-09 69 views
18

我創建了一個自定義的標籤,它應該像那:的Symfony2 /嫩枝:如何分辨定製樹枝標籤無法逃避的輸出

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

不幸的是我不得不使用它像

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

有沒有一種方法可以直接在樹枝延伸中使用?

我的擴展寄存器的縮略圖像這樣的代碼:

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

回答

57

Twig_Function_Method::__construct()的第三個參數是爲功能選項的陣列。這些選項之一是is_safe指定是否函數輸出「安全的」 HTML/JavaScript代碼:

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

感謝那。這是在文檔中指定的嗎?我找不到它,但也許我看起來不夠努力。 – 2013-03-25 15:22:11

+1

@StephenOrr查看Crozin的答案中的鏈接。 – acme 2013-08-20 13:26:26

+0

謝謝你,它幫助我$)你可以添加鏈接手動這個?想知道更多'html'選項可以 – user1954544 2013-09-17 19:41:53

3

枝條做這樣的:

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是正確的,但因爲\Twig_Function_Method現在已經過時,你可以使用\Twig_SimpleFunction原樣:

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