Symfony2 Twig表格小组件阵列访问

时间:2012-06-13 15:40:37

标签: forms symfony widget twig

我有一个表单小部件,有多个选项(多对多关系) 在twig模板中,我可以遍历复选框:

  {% for choice in form.downloads %}
            {{ form_widget(choice) }} {{ form_label(choice) }}<br />
  {% endfor %}

我想直接访问这些选项(他们应该以不同方式定位双格式结尾) 我尝试了几种语法但不起作用

{{ form_widget(form.downloads.0) }} {{ form_label(form.downloads.0) }}<br />
{{ form_widget(form.downloads['0']) }} {{ form_label(form.downloads['0']) }}<br />
{{ form_widget(form.downloads[0]) }} {{ form_label(form.downloads[0]) }}<br />

我是否使用错误的数组键或通常无法访问数组?

1 个答案:

答案 0 :(得分:2)

使用Twig时可以进行数组访问。 我猜你在尝试使用

访问第一个生成的复选框时得到的错误
{{ form_widget(form.downloads.0) }} {{ form_label(form.downloads.0) }}<br />

Method "0" for object "Symfony\Component\Form\FormView" does not exist in ...

因此,您只需使用复选框的子名称即可。你应该在你的buildForm中有这样的东西:

 $builder->add('childName', 'anyTypeYouWant', array())

但我想您正在使用集合类型来生成复选框。在这个具体案例中

{{ form_widget(form.downloads.0) }} {{ form_label(form.downloads.0) }}<br />

应该工作正常!我已经用它来访问没有自定义键的特定收集字段。

你应该也使用twig调试扩展来检查你的form.downloads

{% debug form.downloads %}

如果调试不起作用,你需要添加“app / config / config.yml”文件

services:
    debug.twig.extension:
        class: Twig_Extensions_Extension_Debug
        tags: [{ name: 'twig.extension' }]