1

私は、労働者が委任された「時間」のリストを持っています。管理者はそれらをチェックして (チェックボックス) 請求書に追加できます (ただし、管理者は実際の時間を調整できます)

したがって、時間の配列が選択されており、コントローラーで時間を取得します。

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

1時間以上カウントするので$hours、$hoursでフォームを作成していると、フィールドが自動的に複数回表示されると思いました..

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

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

私はこのようにしようとしました。しかし、それは解決されていません。フォームのコレクションを返すと、フォームを'form' => $form->createView()レンダリングできないため、フォームをレンダリングできません...

4

1 に答える 1

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

これが役立つことを願っています;)

于 2012-07-25T09:29:34.833 に答える