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 用于此,但它尚未合并,所以你运气不好。
我的目标是为 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 用于此,但它尚未合并,所以你运气不好。