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

假设您有这种情况,Class ClassA使用Trait TraitA,它提供了您想要验证的属性,并且 you do not want to edit TraitA 因为它位于外部库中(例如Doctrine Behavior,如https://github.com/KnpLabs/DoctrineBehaviors) .

假设 you want to use Annotations 通过Symfony Validator验证您的类ClassA(https://symfony.com/doc/current/validation.html

你怎么能做到这一点?这些是课程 .

Class ClassA {
    use TraitA
}

Trait TraitA {
    private $property_in_trait_a;
}

以下是我找到的唯一解决方案,可能会生成映射到整个类的违规(我需要在相关表单中指定error_mapping以定位表单上的右侧字段):

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;
    }
}

有更清洁的方法吗?