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

时间:2013-02-26 23:22:00

标签: 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_searchpage', 'cp', 'monCP') }}";

它有效,但它产生了这个:

window.location ="path('hqf_pizzas_searchpage', { 'cp': "%s" }) | url_decode | format('"+monCP+"') | raw";

这不是我想要的。我希望Twig在宏之后执行结果来获得这个:

window.location ="/my-url/cp/"+monCP+"";

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

1 个答案:

答案 0 :(得分:0)

将您的宏体更改为:

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

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

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