我的表格在验证后得到了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方法?这有什么其他方式吗?
谢谢
答案 0 :(得分: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'));
}