“Array”的项目“prototype”不存在

时间:2013-03-06 11:42:54

标签: php symfony collections

我正在使用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

2 个答案:

答案 0 :(得分:2)

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

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

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

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

{{ 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  }}

答案 1 :(得分:1)

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