Mein Ziel ist es, wiederverwendbare Merkmale für allgemeine Aufgaben in symfony2 Anwendungen zu erstellen. Zum Beispiel möchte ich eine träge Eigenschaft haben, wenn sie zu meiner Entität hinzugefügt wird, wird automatisch ein Slug-Feld und ein Listener hinzugefügt, um jede Entität zu aktualisieren. Mein Problem tritt auf, wenn ich Doktrinannotationen von Merkmalen erben will.Symfony Traits und Doctrine Annotations funktionieren nicht wie erwartet
Nehmen Sie dieses Beispiel:
/**
* @UniqueEntity("name")
*/
trait Sluggable {
/**
* @Assert\NotBlank()
* @ORM\Column(type="string", length=255, unique=true)
*/
protected $name;
}
und ich bin mit ihm wie diese
/**
* @ORM\Table(name="seller")
*/
class Seller implements SluggableInterface {
use Sluggable;
}
und wenn ich versuche, Seller
von Form zu erstellen, wird die @UniqueEntity("name")
nicht funktioniert und die Validierung nicht Arbeiten. Ich muss es manuell in die Seller
Klasse hinzufügen, um zu arbeiten, und das will ich nicht. Vielen Dank.
Eine Klasse erbt keine Anmerkungen von einem Merkmal. Aber wahrscheinlich können Sie [doctrine extensions: träge] (https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/sluggable.md) verwenden, um dies zu erreichen. – Muriano