1 ページでより多くのフォームをレンダリングする方法を知っている人はいますか?
エンティティ クラス ImportPath: id があります。そのエンティティに対応する説明、パス、ローカル、および ImportPathForm。私が欲しいのは、各行に小さなフォームがあり、その中の1つのパスを編集できるテーブルのようなものです。
パスの最終カウントがわからないため、ループ内で動的でなければなりません。要求されたフォームは、パス ID からわかる必要があります (まだ実装されていません)。
コード: コントローラ: public function importAction($message="no message") {
$em = $this->getDoctrine()->getEntityManager();
$paths = $em->getRepository('WT2\BabuBundle\Entity\ImportPath')->findAll();
$forms=array();
foreach ($paths as $path) {
$form = $this->createForm(new ImportPathForm(), $path);
$forms[]=$form;
}
// $request = $this->getRequest();
// if ($request->getMethod() == 'POST') {
// $form->bindRequest($request);
// if ($form->isValid()) {
// /* ok */
// }
// }
return $this->render('WT2BabuBundle:Admin:import.html.twig', array('forms'=>$forms,'message'=>$message));
}
表示 (抜粋):
{% for key, form in forms %}
{{ key }}
<form action="{{ path('admin_import') }}" method="post" {{ form_enctype(form) }}>
{{ form_widget(form) }}
<input type="submit" value="Ym2nit" />
</form>
{% endfor %}
編集>
わかった :)
解決策は
$forms=array();
foreach ($paths as $path) {
$form = $this->createForm(new ImportPathForm(), $path);
**$form = $form->createView();**
$forms[]=$form;
}