我创建了一个像这样的宏:
{% macro _path(my_path, param, js_var) %}
{% spaceless %}
path('{{ my_path }}', { '{{ param }}': "%s" }) | url_decode | format('"+{{ js_var }}+"') | raw
{% endspaceless %}
{% endmacro %}
当我这样称呼时:
window.location ="{{ js.path('hqf_pizzas_searchpage', 'cp', 'monCP') }}";
它有效,但它产生了这个:
window.location ="path('hqf_pizzas_searchpage', { 'cp': "%s" }) | url_decode | format('"+monCP+"') | raw";
这不是我想要的。我希望Twig在宏之后执行结果来获得这个:
window.location ="/my-url/cp/"+monCP+"";
知道你怎么能做到这一点?
答案 0 :(得分:0)
将您的宏体更改为:
{{ path(my_path, { param: "+"~js_var~"+" }) }}
我不确定param
的值是否会正确传递。如果没有,试试这个:
{% set params = {} %}
{% set params[param] = "+" ~ js_var ~ "+" %}
{{ path(my_path, params) }}