自定义数据原型symfony3

时间:2017-10-17 12:47:50

标签: javascript php html forms symfony

我有一个嵌入式表单集合,带有自定义数据原型属性。以下是我如何自定义数据原型

我的主要文件(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并正确呈现嵌入的表单。然而,一旦我提交表单,嵌入式表格的树枝结构和样式就消失了。以下是分别提交之前和之后的快照

enter image description here

enter image description here

我的猜测是单击提交后不会调用prototype.html.twig。我对此比较陌生。任何人都可以帮助我。

提前致谢。如果您需要更多代码来重现问题,请与我们联系。

1 个答案:

答案 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 %}