我有一个包含集合的表单(允许添加和删除实体)和一个验证约束,以检查是否有重复的用户选择。
如果存在重复项,则会在新/编辑表单中重定向用户并显示错误消息。 在这种情况下,我正在寻找一种在渲染视图之前从表单中删除重复字段的方法吗?
我可以从我的实体列表中删除重复项,但不能从表单字段中删除。
public function createAction(Request $request)
{
...
$form = $this->createCreateForm($entity);
$form->handleRequest($request);
if ($form->isValid()) {
...
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
return $this->redirect($this->generateUrl('ispc_show', array('id' => $entity->getId())));
}
// Remove the duplicates from the list in the entity
$entity->removeDuplicate();
// And apply to the form
$form->remove....
return $this->render('CompanyDocumentBundle:ISPC:new.html.twig', array(
'entity' => $entity,
'form' => $form->createView(),
));
}
更新
我不想在验证之前删除重复项,因为错误消息对于向用户报告很重要。此外,重复项是“$ request”对象的一部分,表单字段填充此对象,而不是实体。