2017-11-06 8 views
0

パブリック関数createGalleryAction(リクエスト$リクエスト){ギャラリー名がDBに存在する場合はどうすればいいですか?

$gallery = new Gallery; 
    $gallery_form = $this->createFormBuilder($gallery) 
      ->add('galleryName', TextType::class, array('label' => 'Gallery Name')) 
      ->add('Add', SubmitType::class, array('label' => 'Add', 'attr' => array('class' => 'btn btn-primary'))) 
      ->getForm(); 
    $gallery_form->handleRequest($request); 
    if ($gallery_form->isValid() && $gallery_form->isSubmitted()) { 

     $galleryName = $gallery_form['galleryName']->getData(); 
     $gallery->setGalleryName($galleryName); 

     $em = $this->getDoctrine()->getManager(); 
     $em->persist($gallery); 
     $em->flush(); 
    } 

    return $this->render('admin/addgallery.html.twig', [ 
       'gallery_form' => $gallery_form->createView() 
    ]); 
}`**enter code here**` 

検証コードをどこに置くか、私はsymfonyのに新たなんだ言及してください。..

+0

まだ何か試しましたか? –

+0

まだありません。実際に私には分かりません.. –

答えて

0
//Entity Gallery 

use Symfony\Component\Validator\Constraints as Assert; 

/** 
* @ORM\Entity 
* @UniqueEntity("galleryName") 
*/ 
class Gallery 
{ 
/** 
* 
* @ORM\Column(name="galleryName", type="string", length=255, unique=true) 
*/ 
protected $galleryName; 

// ... 
} 

https://symfony.com/doc/current/reference/constraints/UniqueEntity.html

あなたの場合教義を使いたい:

$galleryName = $gallery_form['galleryName']->getData(); 

$galleryExist = $em->getRepsitory('AppBundle:Gallery')->findOneByGalleryName($galleryName); 
    if($galleryExisty){ 
    // do something 
    } 
+0

私はこれを持っていますが、gallerynameがdbであるかどうかを確認する必要があります –

+0

これは、名前が存在し、フォームが有効でエラーが返されるように、gallerynameが存在するかどうかを確認します。 – hous

+0

私は私の応答を更新しました – hous

0

実際にはデータベースのスキーマによって異なります。 ギャラリー名が一意であると定義されている場合(重複する名前を避けたいのでbtwする必要があります)、$ em-> flush()はエラーとなります。したがって、try catch文を使用してコードをカプセル化する必要があります。

try { 
    // add your logic here, ex: 
    ... 
    ... 
    $em->persist($gallery); 

} catch(\Exception $ex) { 

// do whatever you want with your error here, ex: 
$session->getFlashBag()->add('error', 'Gallery already exists'); 
return $this->render('admin/addgallery.html.twig', [ 
      'gallery_form' => $gallery_form->createView() 
]); 

} 
関連する問題