Symfony特征和Doctrine注释不能按预期工作

时间:2016-06-29 13:44:49

标签: php symfony doctrine-orm doctrine traits

我的目标是为symfony2应用程序中的常见任务创建可重用的特征。例如,我想要具有可缓慢的特性,当添加到我的实体时,会自动添加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类中手动添加它才能工作,我不希望这样。感谢。

1 个答案:

答案 0 :(得分:0)

类不会从使用的特征继承“类级”注释,只能从它们的方法和属性继承。学说注释读者不支持这一点。

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

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

这有一个PR,但它还没有合并,所以你运气不好。