我正在使用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
答案 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'解决了问题