【发布时间】:2013-05-05 10:12:46
【问题描述】:
我想在另一个集合类型中包含一个集合类型。 它应该看起来像这样:
只使用一个集合可以正常工作,但我需要编辑外部表单的原型,因此它会为每一行呈现内部表单的原型。
任何想法我该怎么做?还有什么是最好的保存方式
编辑: 现在我正在尝试渲染嵌套表单的原型:
<ul class="characteristics-container" data-prototype="{{ form_widget(form.characteristics.vars.prototype)|e }}" data-prototype-options="{{ form_widget(form.characteristics.options.vars.prototype|e ) }}">
{# iterate over each existing tag and render its only field: name #}
{% for characteristic in form.characteristics %}
<li>{{ form_row(characteristic.name) }}</li>
<div class="characteristics-options">
{% for opt in form.characteristics.options %}
{% endfor %}
</div>
{% endfor %}
</ul>
它在form_widget(form.characteristics.options.vars.prototype|e 中给出错误
Method "options" for object "Symfony\Component\Form\FormView" does not exist in
我尝试了特征[0],它说密钥不存在
这是我的表单类:
PromotionType(基本形式)
$builder
->add('characteristics','collection', array(
'label' => 'Caracteristicas',
'type' => new PromotionCharacteristicType(),
'allow_add' => true,
'allow_delete' => true,
'by_reference' => false
))
PromotionCharacteristicType
$builder
->add('name',NULL, array('label' => 'Nome'))
->add('options', 'collection', array(
'type' => new PromotionCharacteristicOptionType(),
'allow_add' => true,
'allow_delete' => true,
'prototype' => true,
'by_reference' => false,
))
;
PromotionCharacteristicOptionType
$builder
->add('name',NULL, array('label' => 'Nome'))
;
一级原型,工作正常。
【问题讨论】:
-
大家好。我正在尝试开发类似的表单,以创建(新)和编辑嵌套实体。我为实体 A 1:m B 1:m C 开发了一个玩具 Symfony 3.1 捆绑包。它似乎有效。如果您检查并建议如何改进/重写它,我将不胜感激。请参阅github.com/mario6097/SimpleBundle。谢谢。
标签: forms symfony prototype nested-forms