Symfony2获取实体上的验证约束
我正在研究一种方法来获取实体的所有验证约束(我试图实现的是以JSON格式返回此数据,并使用JQuery验证插件在客户端应用相同的约束),但是我在获取约束方面遇到了一些困难, 这是我目前的代码: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
$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("Namespace\JobBundle\Entity\Job");
而$metadata
应该包含您要查找的数据
Symfony 2.3及以上
$metadata = $this->container
->get('validator')
->getMetadataFor("Namespace\JobBundle\Entity\Job");
$validator=$this->get(“validator”)$metadata=$validator->getMetadataFor(新建yourentity())
对象$metadata现在包含有关特定实体的验证的所有元数据。您是否尝试过
$metadata=$this->container->get('validator')->getMetadataFactory()->getClassMetadata(“命名空间\作业包\实体\作业”)
?刚刚注意到$properties属性实际上包含一个约束数组,您的建议也会给出相同的结果,因此如果您给出答案,我很乐意接受。+1,顺便说一句,Symfony 2.3getClassMetadata
不推荐使用,建议使用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
}
}
}