IM在方法的工作得到一个实体的所有验证约束(我所试图实现的是在JSON返回此数据,并适用于使用JQuery验证插件客户端相同的约束),但即时通讯有一些麻烦的限制,这里是我当前的代码:
$metadata = new \Symfony\Component\Validator\Mapping\ClassMetadata("Namespace\JobBundle\Entity\Job");
$annotationloader = new AnnotationLoader(new AnnotationReader());
$annotationloader->loadClassMetadata($metadata);
我得到$元数据是一个空数组的约束属性,其余($属性和$成员只有错误信息......但没有实际的约束(例如:需要,整数......))。
什么即时通讯做错了什么?
我可能会使用,而不是实例化一个新类的元数据的验证服务。 你永远不知道,如果一些类是通过服务初始化。
$metadata = $this->container
->get('validator')
->getMetadataFactory()
->getClassMetadata("Namespace\JobBundle\Entity\Job");
和$metadata
应该有你要找的数据
Symfony的2.3及以上
$metadata = $this->container
->get('validator')
->getMetadataFor("Namespace\JobBundle\Entity\Job");
private function getValidations()
{
$validator=$this->get("validator");
$metadata=$validator->getMetadataFor(new yourentity());
$constrainedProperties=$metadata->getConstrainedProperties();
foreach($constrainedProperties as $constrainedProperty)
{
$propertyMetadata=$metadata->getPropertyMetadata($constrainedProperty);
$constraints=$propertyMetadata[0]->constraints;
foreach($constraints as $constraint)
{
//here you can use $constraint to get the constraint, messages etc that apply to a particular property of your entity
}
}
}
$验证= $这个- > GET( “验证”);
$元数据=用$ validator-> getMetadataFor(新yourentity());
对象$现在的元数据包含所有有关验证是涉及您的特定实体的元数据。