Symfony 特征和 Doctrine 注释没有按预期工作

Symfony traits and Doctrine annotations not working as expected

我的目标是为 symfony2 应用程序中的常见任务创建可重用的特征。例如,我想要有 sluggable 特性,当添加到我的实体时,自动添加 slug 字段和监听器来更新每个实体。我的问题是在尝试从特征继承学说注释时出现的。

举个例子:

/**
 * @UniqueEntity("name")
 */
trait Sluggable {
    /**
    * @Assert\NotBlank()
    * @ORM\Column(type="string", length=255, unique=true)
    */
    protected $name;
}

我就是这样使用的

/**
 * @ORM\Table(name="seller")
 */
class Seller implements SluggableInterface {
    use Sluggable;
}

并且当我尝试从表单创建 Seller 时,@UniqueEntity("name") 不工作并且验证不工作。我必须手动将它添加到 Seller class 中才能工作,但我不想这样。谢谢。

类 不从使用的特征继承 "class-level" 注释,仅从它们的方法和属性继承。学说注释 reader 不支持这一点。

(symfony 验证器组件使用 "doctrine/annotations" 来读取注释,因此它很可能也受到影响。)

https://github.com/doctrine/phpcr-odm/issues/639

有一个 PR 用于此,但它尚未合并,所以你运气不好。