отключить экранирование / urlencoding в Twig_SimpleFunction

я знаю, что это один из распространенных и часто задаваемых вопросов о ветке, но я застрял и запутался

Проблема: Выход функции будет экранирован и вместо /?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 %}

Чего мне не хватает ?! Как решить эту проблему?

0

Решение

Хорошо, похоже, 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 нужно тоже.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]