如何在twig中生成和执行代码?

如何在twig中生成和执行代码?,twig,Twig,我创建了如下宏: {% 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_searchpa

我创建了如下宏:

{% 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') }}";
当我这样称呼它时:

{% 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+"";

你知道怎么做吗?

将你的宏体更改为:

{{ path(my_path, { param: "+"~js_var~"+" }) }}
我不确定
param
的值是否能正确传递。如果没有,请尝试以下操作:

{% set params = {} %}
{% set params[param] = "+" ~ js_var ~ "+" %}
{{ path(my_path, params) }}

只需将宏的内容更改为“
”/myurl/{{param}}/“+{{js_var}}}+”
?谢谢您的评论,但关键是我不希望url被硬编码。