我想创建一个包含子表单集合的表单。
内部表单的实体类型称为Button
。对于本例,让我们假设它只有一个属性,x
,它是一个整数。
我为内部表单定义了ButtonType
类:
class ButtonType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('x', 'integer');
}
}
现在我试着按照如何嵌入表单集合中的说明去做。特别是,它包含以下示例代码:
<ul class="tags" data-prototype="{{ form_widget(form.tags.vars.prototype)|e }}">
...
</ul>
在他们的例子中,内部实体被称为"tags",所以我将"tags"适当地替换为"buttons"。
然后我添加了JavaScript,添加了一个新的子表单来响应链接点击。
问题是 data-prototype
值看起来像这样(为了更好的可读性,我在这里没有转义):
<button type="button" id="storypunkt_buttons___name__" name="storypunkt[buttons][__name__]">__name__label__</button>
(" Storypunkt "是包含集合的外部实体的名称)
这没有意义。为什么它渲染一个按钮,而且只渲染一个按钮?它应该为x
属性呈现一个整数文本字段。我该如何解决这个问题?
只是为了实验,我把它重命名为其他东西(没有改变任何其他东西),这使它工作。
所以答案既简单又愚蠢:你不能把你的实体叫做Button
。