2012-09-26 19 views
14

Symfony 2 web çerçevesine yeni katılıyorum ve çok basit bir doğrulama göreviyle mücadele ediyorum. Ben slug üyesi olan bir posta model Post var, bu yazıya bağlantı oluşturmak için kullanıyorum. Post.orm.yml'da unique: true tanımlanmış ve bu kısıtlamayı bir doğrulayıcı olarak dahil etmek istiyorum.YML doğrulama dosyası yok sayılıyor

Bir dosyayı validation.yml oluşturduk

:

# src/OwnBundles/BlogpostBundle/Resources/config/validation.yml 

OwnBundles\BlogpostBundle\Entity\Post: 
    properties: 
     slug: 
      - NotBlank: ~ 
    constraints: 
     - Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity: slug 

benim denetleyicisi oluşturma işlevi oldukça basittir: Temel pageflow çalışıyor

public function addAction(Request $request) 
{ 
    $post = new Post(); 
    $form = $this->createForm(new PostType(), $post); 

    if($request->getMethod() == 'POST') 
    { 
     $form->bind($request); 
     if($form->isValid()) 
     { 
      $em = $this->getDoctrine()->getManager(); 
      $em->persist($post); 
      $em->flush(); 
      return $this->redirect(
       $this->generateUrl('own_bundles_blogpost_homepage') 
      ); 
     } 
    } 
    return $this->render(
     'OwnBundlesBlogpostBundle:Default:add.html.twig', 
     array(
      'title' => 'Add new blogpost', 
      'form' => $form->createView(), 
     ) 
    ); 
} 

, ben mesajları ekleyebilir ve bunları görebilirsiniz, ama Doğrulama adımı test etmek için bir yayın başlığını çoğaltırsam, bir istisna atar: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'duplicate-slug' for key 'UNIQ_FAB8C3B3989D9B62'. Oldukça uzun zamandır belgelere göz attım ama $form->isValid()'un neden true'u döndürdüğünü öğrenemedim.

cevap

33

Uygulamayı/config/config.yml'de doğrulamayı etkinleştirdiniz mi? app/cache dizini temizlemek unutma sonra

... 

framework: 
    ... 
    validation: { enabled: true, enable_annotations: true } 
    ... 

... 

Ve:

... 

framework: 
    ... 
    validation: { enabled: true } 
    ... 

... 

ve siz de ek açıklamalarla doğrulama tanımlamak istiyorsanız, her iki zorunda doğrulama ve açıklama doğrulamasını etkinleştirmek.

+1

benim config.yml diyor ki: framework: doğrulama: {enable_annotations: true} '; Bu doğrulamayı etkinleştirdiğini farz ettim - ve yanılmışım ... Hızlı yardım için teşekkürler, neden bulamadım bilmiyorum. – nijansen

+0

Ayrıca ek açıklamaları kullanmak istiyorsanız her iki parametreyi de kullanmanız gerekir. Cevabımı düzenledim. – AlterPHP

+0

Teşekkürler, yapılandırmamı buna göre güncelledim. Şimdi bir çekicilik gibi çalışır. – nijansen

İlgili konular