1

Symfony2 フォームは検証に合格できるが、フォームの送信時に一意の制約が原因で Doctrine2 例外が生成されるという問題があります。この PDOException をキャッチすることはできますが、やりたいことは、フォームを無効にして、エンティティの特定の属性が重複していることを示すフォーム エラーを設定することです。私が持っているコードは次のとおりです。

    $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()
    );
4

1 に答える 1

2

UniqueEntity アノテーションを探していると思います。これを使用すると、挿入が試行される前にチェックが実行されるため、try/catch ブロックは必要ありません。

于 2012-06-19T20:15:23.293 に答える