3

我正在使用 Symfony2 和 mopaboostraps。我想在我的表单中创建一个电子邮件收集元素,直到今天一切正常(我不知道为什么)

我收到以下错误:

Item "prototype" for "Array" does not exist in *snip*.html.twig at line 36

这是:

<span id="member-fields-list" data-prototype="{{ form_widget(form.members.vars.prototype)|e }}"></span>

我搜索了一段时间,发现只有一个提示:我的集合元素为空(它将通过 javascript 填充)但是如果我向它添加一个值,它也不会起作用

$UserList = new UserList();
        **********snip***********
        $UserList->setMembers(array());

        $form = $this->createFormBuilder($UserList)
        **********snip***********
    ->add('members', 'collection', array(   
                'type' => 'email',
                'prototype' => true,
                // 'allow_add' => true,
                'allow_delete' => true,
                'options' => array(
                    'required' => true,
                    'attr' => array(
                        'class' => 'email-box',
                        'readonly' => 'readonly',
                    ),
                ),
            )
        )

编辑:得到解决方案

只需取消注释'allow_add' XD

4

2 回答 2

2

form_widget 用于获取集合的一个小部件(了解“一个子字段”),而 form_row 用于获取完整的原型(您的示例中成员的所有子字段)。

因此,请改用form_row来显示成员的完整原型:

{{ form_row(form.members.vars.prototype)|e }}

仅使用 form_widget 获取成员的一个字段,例如“用户名”:

{{ form_widget(form.members.vars.prototype.username)|e }}

您还可以单独获取一个字段的 form_error 及其标签:

{{ form_errors(form.members.vars.prototype.username)|e  }}
{{ form_label(form.members.vars.prototype.username, 'My label')|e  }}
于 2013-03-06T14:34:56.620 回答
2

取消注释'allow_add'解决了这个问题

于 2017-05-26T12:21:29.403 回答