Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony2获取实体上的验证约束_Symfony_Symfony 2.1 - Fatal编程技术网

Symfony2获取实体上的验证约束

Symfony2获取实体上的验证约束,symfony,symfony-2.1,Symfony,Symfony 2.1,我正在研究一种方法来获取实体的所有验证约束(我试图实现的是以JSON格式返回此数据,并使用JQuery验证插件在客户端应用相同的约束),但是我在获取约束方面遇到了一些困难, 这是我目前的代码: $metadata = new \Symfony\Component\Validator\Mapping\ClassMetadata("Namespace\JobBundle\Entity\Job"); $annotationloader = new AnnotationLoader(ne

我正在研究一种方法来获取实体的所有验证约束(我试图实现的是以JSON格式返回此数据,并使用JQuery验证插件在客户端应用相同的约束),但是我在获取约束方面遇到了一些困难, 这是我目前的代码:

    $metadata = new \Symfony\Component\Validator\Mapping\ClassMetadata("Namespace\JobBundle\Entity\Job");
    $annotationloader = new AnnotationLoader(new AnnotationReader());
    $annotationloader->loadClassMetadata($metadata);
我在$metadata中得到的是约束属性的空数组,其余($properties和$members)只有错误消息…但没有实际的约束(例如:required,integer…)


我做错了什么?

我可能会使用验证器服务,而不是实例化新的类元数据。您永远不知道某些类是否通过服务初始化

$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");
$validator=$this->get(“validator”)
$metadata=$validator->getMetadataFor(新建yourentity())


对象$metadata现在包含有关特定实体的验证的所有元数据。

您是否尝试过
$metadata=$this->container->get('validator')->getMetadataFactory()->getClassMetadata(“命名空间\作业包\实体\作业”)
?刚刚注意到$properties属性实际上包含一个约束数组,您的建议也会给出相同的结果,因此如果您给出答案,我很乐意接受。+1,顺便说一句,Symfony 2.3
getClassMetadata
不推荐使用,建议使用
getMetadataFor
。适用于Symfony 4.0
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
            }
        }
    }