Symfony验证器,验证Traits中定义的属性

Symfony验证器,验证Traits中定义的属性,symfony,symfony-validator,Symfony,Symfony Validator,我正在Symfony 2.8中开发一个项目 假设您有这样的场景,ClassA类使用Trait TraitA,Trait TraitA提供了一个您想要验证的属性,您不想编辑TraitA,因为TraitA位于外部库中(例如,条令行为,如中) 假设您希望使用注释通过Symfony验证器()验证类ClassA 你如何做到这一点?这些是课程 Class ClassA { use TraitA } Trait TraitA { private $property_in_trait_a; }

我正在Symfony 2.8中开发一个项目

假设您有这样的场景,ClassA类使用Trait TraitA,Trait TraitA提供了一个您想要验证的属性,您不想编辑TraitA,因为TraitA位于外部库中(例如,条令行为,如中)

假设您希望使用注释通过Symfony验证器()验证类ClassA

你如何做到这一点?这些是课程

Class ClassA {
    use TraitA
}

Trait TraitA {
    private $property_in_trait_a;
}
以下是我找到的唯一一个解决方案,它可能会生成映射到整个类的冲突(我需要在相关表单中指定error_映射,以针对表单上的正确字段):


有没有更干净的方法可以做到这一点?

如果你不能改变这种特征,这种方法有什么不好的地方?然后您只能a)扩展trait或b)覆盖使用类中的属性或c)像操作getter一样操作getter。但是在某些地方,如果注释是你的方式,你需要对它进行注释。@LBA Suggested是什么,或者退回到使用
YAML
文件来指定验证…在条令中有@AttributeOverrides注释,我想知道在Symfony中是否存在类似的东西。如果你不能改变特性,这种方法有什么不好的地方?然后您只能a)扩展trait或b)覆盖使用类中的属性或c)像操作getter一样操作getter。但是在某些地方,如果注释是你的方式,你需要对它进行注释。@LBA Suggested是什么,或者退回到使用
YAML
文件来指定验证…在条令中有@AttributeOverrides注释,我想知道在Symfony中是否存在类似的东西。
use Symfony\Component\Validator\Constraints as Assert;

Class ClassA {
    use TraitA

    /**
     * Fake method only used to validate $property_in_trait_a
     * 
     * @Assert\Something()
     * 
     */
    public function getPropertyInTraitA()
    {
         return $this->property_in_trait_a;
    }
}