0

我使用 symfony2 和 TWIG,我想使用一些全局变量来指向页面中平板电脑的索引:

应用程序/配置/参数.ini

tab_branch="1"

应用程序/配置/config.yml

twig:
    globals:
        tab_branch: %tab_branch%

src/ACME/BranchBundle/Controller/defaultController.php

/**
 * @Template()
 */
public function showAction($id) {
    ...
    return array(
        'tab' => 'tab_branch',
    );
}

src/ACME/BranchBundle/Resources/views/default/show.html.twig

<input type="hidden" id="tablndex" value="{{ {{ tab }} }}" />  //not working

我真正想做的就是让{{ tab }}被解析到tab_branch,然后{{ tab_branch }}被解析到1(就像$$foo在PHP中一样),我该怎么办?

4

3 回答 3

0

我使用 twig 语法在数据中的任何位置引用其他变量中的变量:

foo: "{{ bar.baz }}/quu.txt"
bar:
    baz: /tmp

然后我渲染直到结果不再改变:

    while( $template !== ($result = $twig->render($template, $data)) )
    {
        $template = $result;
    }

这是

  • 不优雅:每个变量值都应该在嵌入之前呈现
  • 不足:变量名在使用前没有渲染,所以 foo.{{i}} 不起作用
  • 简单:我不必引用过滤器或代码,只需引用变量。
  • 小:上面的实现很短,希望很清楚。也可以是单行递归方法。
于 2013-01-23T10:42:39.700 回答
0

编写一个自定义函数来允许这样的评估。

您可能对此提案eval功能感兴趣

于 2012-08-23T09:09:40.870 回答
0

这不能按照您尝试的方式完成,twig 不能那样工作。如果选项卡的可能值不多,您可以执行以下操作:

{% if tab == 'tab_branch' %}
    {{tab_branch}}
{% else if tab == 'other_tab' %}
    {{other_tab}}
{% endif %}

我知道,不是很优雅...

于 2012-08-23T08:39:41.187 回答