说我有界面:
namespace Acme\Bundle\FooBundle\Entity;
use Symfony\Component\Validator\Constraints as Assert;
interface IFoo {
/**
* @Assert\NotBlank
* @Assert\MaxLength(3000)
*/
function getBody();
}
两个类实现了接口,我希望这些类也能够使用getBody
声明上的验证注释。 (即我不想在实现IFoo
的每个子类中复制验证代码,因为它违反了DRY)。
这样做会给我以下例外:
尝试调用抽象方法Acme \ Bundle \ FooBundle \ Entity \ IFoo :: getBody()
有人知道这是可能的,还是有任何变通方法?
答案 0 :(得分:1)
似乎你无法注释一个接口,github上有一个针对这个问题打开的票证:
答案 1 :(得分:-1)
我认为您不能对方法声明使用验证,因为它们应该与属性一起使用。不过,您可以使用抽象mapped superclass。
的内容
/** @MappedSuperclass */
abstract class Foo implements FooInterface
{
/** @Column(type="string")
* @Assert\NotBlank
* @Assert\MaxLength(3000)
*/
protected function $body;
// rest of the class
}
然后你可以从这个扩展你的其他类。