树枝过滤器和引号返回

110*_*ent 0 php twig

我创建了简单的树枝过滤器

class Twig_Extension_Form extends Twig_Extension{
public function getName() {
    return 'Form';
}

public function getFilters() {
    return [
        'fLabel'=>new Twig_Filter_Method($this,'label_filter')
    ];
}

public function getFunctions() {
    return [];
}

public function label_filter($string,$id=null,$class=null){
    return '<label'.(!is_null($id)&&is_string($id)?' id="'.$id.'"':null).(!is_null($class)&&is_string($class)?' class="'.$class.'"':null).'>'.$string.'</label>';
}}
Run Code Online (Sandbox Code Playgroud)

过滤器工作但当我在浏览器引号中显示代码时替换实体。当我使用 echo 而不是返回过滤器工作正常。

我想使用 return 因为并不总是标签应该立即显示。

110*_*ent 5

问题解决了

public function getFilters() {
    return [
        'fLabel'=>new Twig_Filter_Method($this,'label_filter',['is_safe'=>['html']])
    ];
}
Run Code Online (Sandbox Code Playgroud)

禁用此过滤器的自动转义。第三个参数Twig_Filter_Method

['is_safe'=>['html']]

或者

array('is_safe'=>array('html')) 在 PHP < 5.4.x

谢谢你的提示。这很有帮助。