0

我创建了一个这样的宏:

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

知道你怎么能做到这一点吗?

4

1 回答 1

0

将您的宏体更改为:

{{ path(my_path, { param: "+"~js_var~"+" }) }}

我不确定 的值是否param会正确传递。如果没有,试试这个:

{% set params = {} %}
{% set params[param] = "+" ~ js_var ~ "+" %}
{{ path(my_path, params) }}
于 2013-02-27T06:12:30.003 回答