2016-06-29 2 views
1

私の目標は、symfony2アプリケーションで一般的な作業のための再利用可能な特性を作り出すことです。例えば、私は、私のエンティティに追加すると、自動的にスラッグフィールドを追加し、すべてのエンティティを更新するためにリスナーが追加されたときsluggable形質をしたい。私の問題は、教義の注釈を特性から継承しようとするときに起こります。symfonyの特質とDoctrineの注釈が期待通りに機能しない

この例ください:

/** 
* @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クラスに手作業で追加する必要があります。私はそれを望んでいません。ありがとう。

+0

クラスは、特性からアノテーションを継承しません。しかし、これを実現するには、おそらく[doctrine extensions:sluggable](https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/sluggable.md)を使うことができます。 – Muriano

答えて

0

クラスは、使用された特性から "クラスレベル"の注釈を継承しません。それらのメソッドとプロパティからのみ継承します。教義注釈リーダーはこれをサポートしていません。

(symfonyのバリデータ・コンポーネントは、それが最も可能性が高いあまり影響を受けていますので、注釈を読むために「教義/注釈」を使用しています。)

があり、このためPRだが、それはまだマージされていないhttps://github.com/doctrine/phpcr-odm/issues/639

を参照してください。あなたは運が悪いです。

+0

あまりにも悪い、私は別の方法を理解するために行きました.. – nacholibre

関連する問題