保存渲染结果以再次使用它

Saving render result to use it again

我正在尝试在我的控制器中构建一个表单,我的表单包含两个“select”选项,它们使用相同的数据库 table 字段“villes” 我想使用这个字段两次,一次用于城市出发,另一次用于城市到达

      $form = $this->createFormBuilder($vol)
                 ->add('hor_dep')
                 ->add('villes')
                 ->add('villes')
                 ->add('prix')
                 ->add('reduc', CheckboxType::class, array('required' => true, 'label' => 'Réduction'))
                 ->add('nbr_place')
                 ->getForm();

但是当我尝试渲染这个时 form.html.twig

       <div class="col-lg-6">
     {{ form_label(form.hor_dep,'Heure de départ') }}
    {{ form_widget(form.hor_dep) }}
     {{ form_label(form.villes,'Ville de départ') }}
    {{ form_row(form.villes) }}
     {{ form_label(form.hor_arrivee,"Heure d'arrivée") }}
    {{ form_widget(form.hor_arrivee) }}
    {{ form_label(form.villes,"Ville d'arrivée") }}
    {{ form_widget(form.villes) }}
    
</div>
<div class="col-lg-6">
     {{ form_label(form.prix,'Prix') }}
    {{ form_widget(form.prix) }}
     {{ form_label(form.reduc,'possède une réduction ?') }}
    {{ form_widget(form.reduc) }}
     {{ form_label(form.nbr_place,'Nombre de place') }}
    {{ form_widget(form.nbr_place) }}
    </div>

它抛出这个错误

An exception has been thrown during the rendering of a template ("Field "villes" has already been rendered, save the result of previous render call to a variable and output that instead.").

在您的情况下,您必须在 formType 中添加两个字段:villeDepart & villeArrivee(就像您对 heure 所做的那样),因为您不希望第一个表单域被第二个表单域覆盖。

在您的映射中,这两个字段将指向相同的 villes table,但每个字段将具有不同的值。