我有一个表单小部件,有多个选项(多对多关系) 在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 />
我是否使用错误的数组键或通常无法访问数组?
答案 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' }]