2017-01-19 1 views
1

제품 엔티티에 대한 양식이 있으며 내부에 태그를 넣고 있습니다.Symfony 데이터 변압기 검증

나는 documentation을 따라 데이터 변환자를 사용했습니다. 사용자는 공백으로 구분 된 문자열을 입력하여 태그 컬렉션으로 분해합니다.

이제 메타 문자를 사용할 수 없도록 콜렉션으로 변환 된 문자열의 유효성을 검사하려고합니다.

나는이 시도했지만 작동하지 않습니다 :

내가이 어떻게

//AppBundle\Entity\Product.php 
/** 
* @ORM\ManyToMany(targetEntity="Tag", cascade={"persist", "remove"}) 
* @Assert\Regex(
*  pattern="/[\w\s]+/", 
*  match=true, 
*  message="Your property should match my damn regex !" 
*) 
* @ORM\JoinTable(
*  name="contenus_tags", 
*  joinColumns={@ORM\JoinColumn(name="contenu_id", referencedColumnName="id")}, 
*  inverseJoinColumns={@ORM\JoinColumn(name="tag_id", referencedColumnName="id")} 
*) 
*/ 
private $tags; 
할 수 (참조 symfony2 entity validation regexp a-z A-Z 0-9를)?

+1

은에 태그 클래스의 유효성 검사를 추가 그 이름 및 제품 클래스의 태그에 대한 "유효한"어설 션입니까? – Veve

+1

와우, 데이터 변환 후에도 작동한다고 생각하지 못했습니다. o_O Symfony가 너무 똑똑합니다! 고맙습니다 ! 답변을 추가하여 수락 할 수 있습니다. –

답변

1

제품 클래스에 태그에 이름에 태그 클래스의 검증 및 "유효"주장을 추가

//AppBundle\Entity\Tag.php 
/** 
* @Assert\Regex(
*  pattern="/^[a-Z0-9]+$/", 
*  match=true, 
*  message="Your property should match my damn regex !" 
*) 
*/ 
private $name; 

//AppBundle\Entity\Product.php 
/** 
* @ORM\ManyToMany(targetEntity="Tag", cascade={"persist", "remove"}) 
* @Assert\Valid() 
* @Assert\Regex(
*  pattern="/[\w\s]+/", 
*  match=true, 
*  message="Your property should match my damn regex !" 
*) 
* @ORM\JoinTable(
*  name="contenus_tags", 
*  joinColumns={@ORM\JoinColumn(name="contenu_id", referencedColumnName="id")}, 
*  inverseJoinColumns={@ORM\JoinColumn(name="tag_id", referencedColumnName="id")} 
*) 
*/ 
private $tags;