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
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.
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
Ayrıca ek açıklamaları kullanmak istiyorsanız her iki parametreyi de kullanmanız gerekir. Cevabımı düzenledim. – AlterPHP
Teşekkürler, yapılandırmamı buna göre güncelledim. Şimdi bir çekicilik gibi çalışır. – nijansen