저는 Symfony 2 웹 프레임 워크를 처음 사용하며 매우 기본적인 유효성 검사 작업에 어려움을 겪고 있습니다. 게시물에 대한 링크를 작성하는 데 사용하는 slug
멤버가있는 엔티티 모델 Post
이 있습니다. Post.orm.yml
에서 unique: true
을 정의했으며이 제약 조건을 유효성 검사기로 포함하고자합니다.YML 유효성 검사 파일이 무시됩니다.
validation.yml
만든
:
# src/OwnBundles/BlogpostBundle/Resources/config/validation.yml
OwnBundles\BlogpostBundle\Entity\Post:
properties:
slug:
- NotBlank: ~
constraints:
- Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity: slug
내 컨트롤러의 생성 기능은 매우 간단하다 : 기본적인 pageflow 잘 작동
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(),
)
);
}
, 내가 글을 추가하고 그들을 볼 수 있지만, 내 유효성을 테스트하기 위해 게시물 제목을 복제하면 예외가 throw됩니다 (SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'duplicate-slug' for key 'UNIQ_FAB8C3B3989D9B62'
). 지금 당분간 문서를 스캔했지만 왜 $form->isValid()
이 true
을 반환하는지 알 수 없었습니다.
내 config.yml은 다음과 같이 말합니다 :'framework : validation : {enable_annotations : true}'; 나는 이것이 유효성 검증을 가능하게한다고 가정했는데, 나는 틀렸어 ... 빠른 도움을 주셔서 감사합니다. 왜 이걸 찾을 수 없었는지 모르겠습니다. – nijansen
주석을 사용하려면 두 매개 변수를 모두 사용해야합니다. 나는 내 대답을 편집했다. – AlterPHP
고마워, 내가 그에 따라 내 config를 업데이트했습니다. 이제 그것은 매력처럼 작동합니다. – nijansen