2012-07-01 3 views
0

필드 slug가있는 엔티티에 대한 클래스 제약이 있습니다. 커스텀 클래스 제한에서 슬러그에 대한 검사를하고 싶지만 제약 조건에서 getSlug() 값은 비어 있습니다.sluggable entiy에 대한 symfony2 클래스 validator

// my custom class validator 
public function isValid($page, Constraint $constraint) { 
    $slug = $page->getSlug(); 

=>$slug이 비어 있습니다.

public function createAction() 
{ 
    $entity = new Page(); 
    $request = $this->getRequest(); 
    $form = $this->createForm(new PageType(), $entity); 
    $form->bindRequest($request); 

사용자 정의 클래스 유효성 검사기가 $form->bindRequest($request)에서 호출됩니다

여기 여기 내 컨트롤러 내 법인

class page 
{ 
    /** 
    * @ORM\Column(name="name", type="string", length=150) 
    * @Assert\NotBlank() 
    */ 
    private $name; 

    /** 
    * @Gedmo\Slug(fields={"name"}) 
    * @ORM\Column(name="slug", type="string", length=255) 
    */ 
    private $slug; 

입니다. 제 생각에 슬러그는 설정되지 않았습니다. 왜냐하면 교리가 사전 지속 사건에서 그것을 설정할 것이기 때문입니다. 그러나이 이벤트는 나중에 $em->persist($entity)에서 호출됩니다.

내 클래스 제약 조건에서 페이지의 슬러그를 얻을 수있는 방법이 있습니까?

답변

0

아니요.

당신이 말했듯이, 슬러그는 prePersist 이벤트에서 생성됩니다.

슬러그를 확인해야합니까? 그렇다면 @Gedmo\Slug 주석을 삭제하고 직접 만들어보세요 ...하지만 정말 좋은 생각인지는 잘 모르겠습니다.

+0

아마 슬러그에 대한 유효성 검사기가 필요하지 않습니다. 필요한 것은 http://stackoverflow.com/questions/10968300/unique-slugs-with-multi-entities-in-symfony2에 설명 된 user_slug/page_slug의 고유 한 조합입니다. – huzi