0

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

  {% 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 />

我使用了错误的数组键还是数组访问通常是不可能的?

4

1 回答 1

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' }]
于 2012-06-13T16:04:08.703 回答