在Twig_SimpleFunction中禁用转义/ urlencoding

时间:2014-10-20 15:09:41

标签: php twig silex

我知道这是关于树枝的常见和常见问题之一,但我感到困惑和困惑

问题:功能输出将被转义,而不是/?some_var=value&maybe_another_var=another_value我得%2F%3Fsome_var%3Dvalue%26maybe_another_var%3Danother_value完全破坏我的锚标签

目标:我尝试阻止 auto_urlencoding,这种情况一直发生在自定义函数中。

我使用的是什么:一个utilphp::util::add_query_arg()方法和一个自定义的Twig-Function(Twig_SimpleFunction

代码

我如何使用

$twig->addFunction( new \Twig_SimpleFunction('util_add_query_args', 
            function(){
                    return \utilphp\util::add_query_arg( func_get_args() ); 
            },
            array('is_safe' => array('all')) //also tried array('html') but didn't worked
    ));

我如何使用 tempalte

<img src="//{{app_host_name}}/{{ other_url_segments}}{{ util_add_query_args( {'fontStyle' : style } , data.query_string )}}">

这应该 追加 &fontStyle=value_from_variable到给定的查询字符串,然后将返回

data.query_string - 可能已包含类似?some_var=value&maybe_another_var=another_value的查询,但它可能因请求而异。在某些情况下它是空的,所以为了获得有效的查询,我必须使用util::add_query_arg(),因为它也涵盖了这种情况

没有工作:

  • |raw添加到{{ util_add_query_args( {'fontStyle' : style } , data.query_string ) }}
  • 添加 {% autoescape false %} <img src="//{{app_host_name}}/{{ other_url_segments}}{{ util_add_query_args( {'fontStyle' : style } , data.query_string )}}"> {% endautoescape %}

我缺少什么?!如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

好吧,似乎func_get_args()是#34;坏人&#34;。不知道为什么,但自从我改变了

function(){
   return \utilphp\util::add_query_arg( func_get_args() ); 
}

function($args_arr, $query_string){
    return \utilphp\util::add_query_arg( $args_arr, $query_string ); 
}

它有效......并且也不需要{% autoescape false %}|raw