複数の行を持つ単純なフォームを作成します。
コントローラ:
public function indexAction()
{
$repository = $this->getDoctrine()->getRepository('MyBundle:Product');
$products = $repository->findAll();
foreach ($products as $product) {
$forms[] = $this->createForm(new ProductType, $product)->createView();
}
return $this->render('MBundle:Default:index.html.twig', array('form' => $forms);
}
これを小枝でレンダリングします。
<form action="{{ path('_submit') }}" method="post">
{% for key, formData in forms %}
{{ form_row(formData.id) }}
{{ form_row(formData.name) }}
{{ form_row(formData.nameEnglish) }}
<br clear="all" />
{% endfor %}
</form>
フォームを送信すると、入力フィールド セットのそれぞれに同じ名前属性があり、最後の属性のみが取得されます。すべての行を取得して submitAction() コントローラーで検証する方法は? 各入力には一意の名前が必要ですよね? ...そしておそらく、何らかの形で name="something[name][]" を設定する必要がありますが、どうすればよいですか?