symfony2 在同一页面中编辑更多实体

symfony2 edit more entities in same page

如何在同一页面中编辑更多产品实体(没有 1 到多)。 在我的编辑中:

    $entities=$em->getRepository('MyBundle:Product')->findAll();
    $editForm=array(); 
    $deleteForm=array();
    foreach ($entities as $product )
    {
        $editForm [$port->getId()]= $this->createEditForm($product);
        $deleteForm[$port->getId()] = $this->createDeleteForm($product->getId());
    }

    return $this->render('MyBundle:Product:edit.html.twig', array(
        'entities'      => $entities,
        'edit_form'   => $editForm->createView(),
        'delete_form' => $deleteForm->createView(),
    ));

我有这个错误:

  Error: Call to a member function createView() on a non-object

以及如何更新 edit.thml.twig 以将所有表单更新显示为 table 只有一次提交?

这不是关于 Symfony2,而是关于 PHP,您正在对数组调用方法...

考虑这样的事情:

$entities = $em->getRepository('MyBundle:Product')->findAll();
$editForms = array();
$deleteForms = array();
foreach ($entities as $product)
{
    $editForms[$port->getId()] = $this->createEditForm($product)
        ->createView();
    $deleteForms[$port->getId()] = $this->createDeleteForm($product->getId())
        ->createView();
}

return $this->render('MyBundle:Product:edit.html.twig', array(
    'entities'     => $entities,
    'edit_forms'   => $editForms,
    'delete_forms' => $deleteForms,
));

使用像这样的模板:

{% for form in edit_foms %}
    {{ form(form) }}
{% endfor %}

{% for form in delete_foms %}
    {{ form(form) }}
{% endfor %}

我已经解决了这个问题: 更改表单名称:

public $name;
/**
 * @return string
 */

public function getName()
{
    return (string)'port_'.$this->name;
}
public function __construct($name=0) {
    $this->name=$name;
}

在我的控制器中 编辑动作:

        $entities = $em->getRepository('InfraProductBundle:InfraPortDdf')->findAll();

      foreach ($entities as $port )
    {
        $editForm [$port->getId()]= $this->createEditForm($port);


        $edit_view[$port->getId()]=$editForm[$port->getId()]->createView();
    }
 return $this->render('......:edit.html.twig', array(
        'entities'      => $entities,
        'edit_form'   => $edit_view,

    ));

更新操作中

 foreach  ($array_id as $key=>$id){
        if(!is_numeric(str_replace('port_','',$id)))
            continue;
    $entity = $em->getRepository('InfraProductBundle:InfraPortDdf')->find(str_replace('port_','',$id));

    if (!$entity) {
        throw $this->createNotFoundException('Unable to find InfraPortDdf entity.');
    }
    $editForm = $this->createEditForm($entity);
    if($editForm->submit($request->request->get($id)))
        $em->flush();


    }

在我的 edit.html.twig:

   {% for key, edit in edit_form %}
   ...
   {{form_widget(edit.description,{name:'['~key~'][description]',  'attr': { 'name' : '['~key~'][description]' } } ) }} 
   ....
   {%endfor%}