0

公共函数 createGalleryAction(请求 $request) {

    $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 的新手..

4

2 回答 2

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
  }
于 2017-11-06T16:24:14.820 回答
0

它实际上取决于您的数据库架构。如果画廊名称被定义为唯一的(顺便说一句,您应该这样做,因为您想避免重复名称),$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()
 ]);

}
于 2017-11-06T16:27:17.870 回答