-->

Symfony2中得到的实体验证约束(Symfony2 get validation constra

2019-07-21 21:37发布

IM在方法的工作得到一个实体的所有验证约束(我所试图实现的是在JSON返回此数据,并适用于使用JQuery验证插件客户端相同的约束),但即时通讯有一些麻烦的限制,这里是我当前的代码:

    $metadata = new \Symfony\Component\Validator\Mapping\ClassMetadata("Namespace\JobBundle\Entity\Job");
    $annotationloader = new AnnotationLoader(new AnnotationReader());
    $annotationloader->loadClassMetadata($metadata);

我得到$元数据是一个空数组的约束属性,其余($属性和$成员只有错误信息......但没有实际的约束(例如:需要,整数......))。

什么即时通讯做错了什么?

Answer 1:

我可能会使用,而不是实例化一个新类的元数据的验证服务。 你永远不知道,如果一些类是通过服务初始化。

$metadata = $this->container
                 ->get('validator')
                 ->getMetadataFactory()
                 ->getClassMetadata("Name‌​space\JobBundle\Entity\Job");

$metadata应该有你要找的数据

Symfony的2.3及以上

$metadata = $this->container
                 ->get('validator')
                 ->getMetadataFor("Name‌​space\JobBundle\Entity\Job");


Answer 2:

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());
对象$现在的元数据包含所有有关验证是涉及您的特定实体的元数据。



文章来源: Symfony2 get validation constraints on an entity