symfony collectiontype 数据原型输出不完整,只呈现空 div
symfony collectiontype data-prototype output incomplete, only empty div rendered
我有一个用于编辑用户实体的 UserType 表单。每个用户都有一个权限集合,该集合通过具有
的 CollectionType 进行管理
[ 'entry_type'=>'PermissionType', 'allow_add'=>true, 'prototype'=>true ]
从 Doctrine 加载 User 对象时,权限是正确的,并且在呈现视图时它们会正确显示。当我这样单独呈现权限时:
{%for R in form.permissions%}
{{form_widget(R)}}{{form_label(R)}}{{form_errors(R)}}
{%endfor%}
我的包含元素的数据属性标签呈现如下:
data-prototype="{{form_widget(form.permissions.vars.prototype)|e}}"
但是原型只包含一个空的 div(但正确命名为 id)。
data-prototype="<div id="user_permissions___name__"></div>"
文档说明了这一点:
If you render your whole "tags" sub-form at once (e.g.
form_row(form.tags)), then the prototype is automatically available on
the outer div as the data-prototype attribute, similar to what you see
above.
所以我也尝试了这种方法,然后生成的div的数据原型属性也包含一个标签:
data-prototype="<div><label class="required">__name__label__</label><div id="user_permissions___name__"></div></div>"
为我的测试用例生成的三个 PermissionTypes 生成完美的输出。
所以我的问题是:我的原型未正确呈现的原因可能是什么?也许我发现了一个错误?我也尝试了一次渲染完整表单的情况,和第二种情况一样。
我找到了,我弄错了。我在 PRE_SET_DATA FormEvent 中将某些输入元素添加到表单中,因为我想更改标签以反映某些数据。但是,当 Symfony 生成数据原型时,它会调用 buildForm 但不会设置任何数据。所以得到的空 div 实际上是非常正确的。直接在 buildForm 中构建表单解决了它。
我有一个用于编辑用户实体的 UserType 表单。每个用户都有一个权限集合,该集合通过具有
的 CollectionType 进行管理[ 'entry_type'=>'PermissionType', 'allow_add'=>true, 'prototype'=>true ]
从 Doctrine 加载 User 对象时,权限是正确的,并且在呈现视图时它们会正确显示。当我这样单独呈现权限时:
{%for R in form.permissions%}
{{form_widget(R)}}{{form_label(R)}}{{form_errors(R)}}
{%endfor%}
我的包含元素的数据属性标签呈现如下:
data-prototype="{{form_widget(form.permissions.vars.prototype)|e}}"
但是原型只包含一个空的 div(但正确命名为 id)。
data-prototype="<div id="user_permissions___name__"></div>"
文档说明了这一点:
If you render your whole "tags" sub-form at once (e.g.
form_row(form.tags)), then the prototype is automatically available on
the outer div as the data-prototype attribute, similar to what you see
above.
所以我也尝试了这种方法,然后生成的div的数据原型属性也包含一个标签:
data-prototype="<div><label class="required">__name__label__</label><div id="user_permissions___name__"></div></div>"
为我的测试用例生成的三个 PermissionTypes 生成完美的输出。
所以我的问题是:我的原型未正确呈现的原因可能是什么?也许我发现了一个错误?我也尝试了一次渲染完整表单的情况,和第二种情况一样。
我找到了,我弄错了。我在 PRE_SET_DATA FormEvent 中将某些输入元素添加到表单中,因为我想更改标签以反映某些数据。但是,当 Symfony 生成数据原型时,它会调用 buildForm 但不会设置任何数据。所以得到的空 div 实际上是非常正确的。直接在 buildForm 中构建表单解决了它。