是否可以创建和呈现我所知道的关于集合的表单,但它们并不适合我的想法?
我想要的是这样的东西
$data=$em->findAll();
$Forms=$this->createForm(new SomeType,$data);
return $this->render(someView,array("Forms"=>$Forms->createView()));
{% for Form in Forms %}
{{ form(Form)}}
{% endfor %}
答案 0 :(得分:7)
只需在数组中创建表单:
$data = $em->findAll();
for ($i = 0; $i < $n; $i++) {
$forms[] = $this->container
->get('form.factory')
->createNamedBuilder('form_'.$i, new SomeType, $data)
->getForm()
->createView();
}
return $this->render(someView, array("forms" => $forms));
如edlouth所述,您可以创建单独命名的每个表单。我更新了我的代码。
答案 1 :(得分:0)
在数组中创建表单,但为每个表单指定一个唯一的名称。
我已经将它改为formbuilder,这可能不适合你,但希望类似的东西能起作用。我也不确定是否要使用new SomeType
而不是&#39;表格&#39;,请参阅http://api.symfony.com/2.4/Symfony/Component/Form/FormFactory.html#method_createNamedBuilder。
$data = $em->findAll();
for ($i = 0; $i < $n; $i++) {
$forms[] = $this->container
->get('form.factory')
->createNamedBuilder('form_'.$i, new SomeType, $data)
->getForm()
->createView();
}
return $this->render(someView, array("forms" => $forms));
答案 2 :(得分:0)
Symfony3:
$datas = $em->findAll();
foreach ($datas as $key=>$data)
{
$form_name = "form_".$key;
$form = $this->get('form.factory')->createNamed(
$form_name,
SomeType::class,
$data
);
$views[] = $form->createView();
}
return $this->render(someView, ["forms" => $views]);
答案 3 :(得分:0)
动作:
[_NewEnum]
一种更好的呈现方式:
$forms = [];
foreach ($articles as $article) {
$forms[$article->getId()] = $this->get('form.factory')->createNamed(
'article_'.$article->getId(), // unique form name
ArticleType::class,
$article
);
$forms[$article->getId()]->handleRequest($request);
if ($forms[$article->getId()]->isValid()) {
// do what you want with $forms[$article->getId()]->getData()
// ...
}
}