2017-11-06 3 views
0

public function createGalleryAction (Request $ request) {Wie kann ich prüfen, ob der Galeriename in der DB existiert?

$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**` 

Bitte erwähnen, wo der Validierungscode zu setzen, ich bin neu in die Symfony ..

+0

haben Sie schon etwas ausprobiert? –

+0

Noch nicht. Eigentlich weiß ich nicht .. –

Antwort

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

, wenn Sie möchte Lehre verwenden:

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

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

Ich habe dies, aber ich muss überprüfen, ob der Galerie-Name in db ist –

+0

Dies wird überprüfen, ob der Galerie-Name in db ist, wenn Name existiert, so dass das Formular nicht gültig ist und ein Fehler zurückgegeben wird – hous

+0

Ich habe meine Antwort aktualisiert – hous

0

Es hängt tatsächlich von Ihrem Datenbankschema ab. Wenn Galeriename als eindeutig definiert ist (was Sie später tun sollten, da Sie doppelte Namen vermeiden möchten), würde $ em-> flush() einen Fehler auslösen. Daher sollten Sie Ihren Code mit einer try catch-Anweisung kapseln:

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() 
]); 

} 
Verwandte Themen