Symfony2阵列的形式?

时间:2014-07-15 00:13:06

标签: php symfony symfony-2.5

是否可以创建和呈现我所知道的关于集合的表单,但它们并不适合我的想法?

我想要的是这样的东西

控制器

$data=$em->findAll();
$Forms=$this->createForm(new SomeType,$data);

return $this->render(someView,array("Forms"=>$Forms->createView()));

枝条

  {% for Form in Forms %}
  {{ form(Form)}}
  {% endfor %}

4 个答案:

答案 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()
        // ...
    }
}