【问题标题】:symfony collectiontype data-prototype output incomplete, only empty div renderedsymfony collectiontype data-prototype 输出不完整,只渲染了空的 div
【发布时间】:2016-03-25 02:15:41
【问题描述】:

我有一个用于编辑用户实体的 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属性也包含一个标签:

data-prototype="<div><label class="required">__name__label__</label><div id="user_permissions___name__"></div></div>"

为我的测试用例生成的三个 PermissionType 否则会生成完美的输出。

所以我的问题是:我的原型无法正确渲染的原因是什么?也许我发现了一个错误?我也试过一次渲染完整表单的情况,和第二种情况一样。

【问题讨论】:

    标签: symfony-forms symfony


    【解决方案1】:

    我找到了,我犯了一个错误。我在 PRE_SET_DATA FormEvent 中向表单添加了某些输入元素,因为我想更改标签以反映一些数据。但是,当 Symfony 生成数据原型时,它调用 buildForm 但它没有设置任何数据。所以得到的空 div 实际上是非常正确的。直接在 buildForm 中构建表单解决了它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-19
      • 2014-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-13
      相关资源
      最近更新 更多