我有一个嵌入式表单集合,带有自定义数据原型属性。以下是我如何自定义数据原型
我的主要文件(listingbedroomaddpage.html.twig
):
<div class="bedrooms" data-prototype=
"{% filter escape %}
{{ include('EpitaHousingBundle:Listing:prototype.html.twig', { 'form': form.bedrooms.vars.prototype }) }}
{% endfilter %}">
</div>
我的prototype.html.twig
:
<div class="row">
<div class="col-md-2">{{ form_label(form.rentamount, 'Rent') }}</div>
<div class="col-md-2">{{ form_widget(form.rentamount) }}</div>
<div class="col-md-1">{{ form_widget(form.rentcurrency) }}</div>
<div class="col-md-2">{{ form_widget(form.rentduration) }}</div>
<div class="col-md-3">{{ form_errors(form.rentamount) }}</div>
<div class="col-md-1">{{ form_errors(form.rentcurrency) }}</div>
<div class="col-md-1">{{ form_errors(form.rentduration) }}</div>
</div>
当我第一次渲染表单时,调用prototype.html.twig
并正确呈现嵌入的表单。然而,一旦我提交表单,嵌入式表格的树枝结构和样式就消失了。以下是分别提交之前和之后的快照
我的猜测是单击提交后不会调用prototype.html.twig。我对此比较陌生。任何人都可以帮助我。
提前致谢。如果您需要更多代码来重现问题,请与我们联系。
答案 0 :(得分:0)
我知道了。对不起,我来晚了,但是到了。 在主树枝中,您需要循环浏览所有集合(在本例中为form.bedrooms),并在循环内部渲染原型表格。在此代码下方
<div class="bedrooms" data-prototype=
"{% filter escape %}
{{ include('EpitaHousingBundle:Listing:prototype.html.twig', { 'form': form.bedrooms.vars.prototype }) }}
{% endfilter %}">
</div>
像这样
{% for bedroom in form.bedrooms %}
<div class="row">
<div class="col-md-2">{{ form_label(bedroom.rentamount, 'Rent') }}</div>
<div class="col-md-2">{{ form_widget(bedroom.rentamount) }}</div>
<div class="col-md-1">{{ form_widget(bedroom.rentcurrency) }}</div>
<div class="col-md-2">{{ form_widget(bedroom.rentduration) }}</div>
<div class="col-md-3">{{ form_errors(bedroom.rentamount) }}</div>
<div class="col-md-1">{{ form_errors(bedroom.rentcurrency) }}</div>
<div class="col-md-1">{{ form_errors(bedroom.rentduration) }}</div>
</div>
{% endfor %}