2012-06-19 123 views
1

我有一個問題,即Symfony2表單可以通過驗證,但在提交表單時仍然會生成由唯一約束引起的Doctrine2異常。我可以捕獲這個PDOException,但我想要做的是使表單失效,並設置一個表示該實體的特定屬性是重複的表單錯誤。我的代碼是:我可以使Symfony2表單無效嗎?

$entity = new Tag(); 
    $request = $this->getRequest(); 
    $form = $this->createForm(new \Acme\AdminBundle\Form\Tag(), $entity); 
    $form->bindRequest($request); 
    if ($form->isValid()) { 
     $em = $this->getDoctrine()->getEntityManager(); 
     try { 
      $em->persist($entity); 
      $em->flush(); 
      return $this->redirect($this->generateUrl('tag_edit', array('id' => $entity->getTagId()))); 
     } catch(ORM\PDOException $e) { 
      if ($e->getCode() === '23000') { 
        // What do I do here?? 
      } 
     } 

    } 
    return array(
      'entity' => $entity, 
      'form' => $form->createView() 
    ); 

回答

2

我認爲您正在尋找UniqueEntity annotation。 如果使用它,則不需要try/catch塊,因爲在嘗試插入之前將執行檢查。

+0

謝謝 - 非常完美。 – gview

相關問題