【问题标题】:symfony2 display twice the fields of the formsymfony2 显示表单字段的两倍
【发布时间】:2012-06-11 20:25:49
【问题描述】:

我有一个工人通过任务传递的“小时”列表。管理员可以选中它们(复选框)以将它们添加到账单中,(但他可以调整实际时间)

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

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

所以$hours 算了一个多小时,我想如果我用$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()so 我无法呈现表单...

【问题讨论】:

  • 嘿,没有答案我仍然能够做到,使用关系类(manytoone)的方式导致账单有很多计费时间,所以我可以生成字段(并在 javascript 中解析它) .但是我仍然不知道如何在一个页面中显示多个表单,如果我想同时创建 2 个实体??

标签: php forms symfony twig


【解决方案1】:

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

$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 %}

我希望这会有所帮助;)

【讨论】:

  • 谢谢你的回答,我想我尝试了像你一样渲染表单的方法。我认为我仍然有一些问题,但正如我在评论中所说,我使用关系来生成表单。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-31
  • 1970-01-01
  • 1970-01-01
  • 2013-01-22
相关资源
最近更新 更多