我想访问与嵌入式表单关联的对象,而不仅仅是访问我在表单中内置的字段。
我的用途是网上论坛的成员列表。组是 Group 实体,用户是 User 实体,组成员是 GroupMember 实体。 GroupMember 对象具有一个 permissions 字段,用于描述用户对该组的访问权限。
我想要一个列出用户并具有下拉菜单以选择权限的表单。像我的TWIG文件中一样:
{% for groupMember in form.members %}
<div class="row">
<div class="col-sm-6">
{{ groupMember.user.printPrettyName }}
</div>
<div class="col-sm-3">
{{ form_widget(groupMember.permission) }}
</div>
</div>
{% endfor %}
显然,此操作中的第四行不起作用,因为 groupMember 是 FormView 对象而不是 GroupMember 对象。当我{{ dump(groupMember) }}
时,我看到的是 vars 数组,其中的 value 条目包含了被引用的对象(即 GroupMember 对象)。而当我{{ dump(groupMember.vars.value }}
时,它将转储具有其属性 user , group , permission 等的对象。但是当我尝试{{ 1}}出现错误无法访问null变量上的属性(“用户”)。我无法使用{{ dump(groupMember.vars.value.user.lastName) }}
访问,因为 user 不是表单中的字段。
我可以通过将 user 作为 EntityType 字段(其 class 设置为)添加到表单中,从而获得非常接近我想要的东西的东西。 用户,将_choice_label_设置为 printPrettyName ,将禁用的设置为 true ,然后将上面的第四行更改为{{ dump(groupMember.user.vars) }}
,除非我不这样做。希望变灰/禁用下拉。
请注意,这是美学的事情。放入禁用的下拉字段会正确更新所有数据库记录。