я знаю, что это один из распространенных и часто задаваемых вопросов о ветке, но я застрял и запутался
Проблема: Выход функции будет экранирован и вместо /?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 (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 %}
Чего мне не хватает ?! Как решить эту проблему?
Хорошо, похоже, func_get_args()
был «плохим парнем». Не знаю почему именно, но так как я изменился
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
нужно тоже.
Других решений пока нет …