1

当我查找插入过程时,我的表单在验证后有 4 个字段,如果发现我必须执行以下操作也可以正常工作

if($form->isValid()){
           $data = $form->getData();
           $entity->setName($data->getName());
           $entity->setEmail($data->getEmail());
           $entity->setStatus($data->getStatus());
           $entity->setSubscribedon($data->getSubscribedon());
           $em = $this->getDoctrine()->getManager();
           $em->persist($entity);
           $em->flush();
           $session->getFlashBag()->add('success', 'Subscriber added successfully');
           return $this->redirect($this->generateUrl('admin_subscribers'));        
        }

但是我们有没有其他方法,比如批量分配数据来插入?就像在 Yii 中一样,我们可以在不设置单个表单数据的情况下分配整个表单字段,假设如果我的表单有 15 个字段,我是否必须为每个字段调用 set 方法?还有其他方法吗?

谢谢你

4

1 回答 1

3

您需要在创建表单时传递实体对象,然后在表单验证后只保留该实体

$entity = new Entity();
$em = $this->getDoctrine()->getManager();
$form = $this->createForm(new FormType(), $entity);
$form->handleRequest($request);
if ($form->isValid()) {
    $em->persist($entity);
    $em->flush();
     return $this->redirect($this->generateUrl('admin_subscribers'));
}
于 2015-02-18T07:45:42.040 回答