symfony2显示两次表单的字段

时间:2012-06-11 20:25:49

标签: php forms symfony twig

我有一份工作人员通过任务的“小时”清单。管理员可以检查它们(复选框)以将它们添加到账单中(但他可以调整实际时间)

所以,我选择了一小时,在我的控制器中,我得到了几个小时:

$hours = $repository->findBy(array('id' => $tabHour));

所以$hours计算了一个多小时,我想如果我用$小时创建一个表单,它会自动显示多个字段..

foreach($hours as $key => $test){

    $billedHour[$key] = new BilledHour();
    $form[$key] = $this->container->get('form.factory')->create(new BillMandateForm(), $hour);
}   

我试着像this那样做。但它没有解决,因为如果我返回一些我不能做的表格集'form' => $form->createView(),所以我无法渲染表格......

1 个答案:

答案 0 :(得分:0)

尝试将所有表单视图打包在数组

$billedHours = array();
$forms = array();
foreach($hours as $hour) {
    $billedHours[] = new BilledHour();
    $forms[] = $this->container->get('form.factory')->create(new BillMandateForm(), $hour);
}

然后,创建渲染表单视图数组

$formsToRender = array();
foreach($forms as $form) {
    $formsToRender[] = $form->createView();
}

然后,将此数组传递给Twig:

...
'forms' => $formsToRender
...

最后在Twig中渲染数组中的每个表单视图:

{% for form in forms %}
    {{ form_row(form.id) }} {# or form_widget(form) if you want to render whole from instead of some fields #}
{% endfor %}

我希望这会有所帮助;)