2012-03-09 52 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'] 
    ]), 
];