Attribute-Tabelle für eigene Entity

Hallo zusammen!

Ich möchte gerne eine Attribut-Tabelle für eine Entity aus einem eigenen Plugin verwenden.
Dafür habe ich diese Hürden bereits überwunden:

  • Anlegen der Tabelle in Plugin::install (einfach)
  • Eweitern von %shopware_attribute.table_entity_mapping% über einen CompilerPass
  • Anlegen des Attributes über den CrudService ist ab hier möglich

Wo es hakt: Die Erzeugung der Attribute-Klassen. 
\Shopware\Components\Model\Generator::getClassNameOfTableName
kann nicht mit Entities aus Plugins arbeiten, da 
\Shopware\Components\Model\Generator::createTableMapping
einen eigenen DirectoryIterator instanziert und nur die Shopware-eigenen Entities betrachtet. ಠ_ಠ
\Shopware\Components\Model\Generator
zu erweitern kommt nicht in betracht, da dieser nicht aus dem Container kommt, sondern in
\Shopware\Components\Model\ModelManager::createModelGenerator
erzeugt wird. (╯°□°)╯︵ ┻━┻

Die einzigen Möglichkeiten die ich im Moment sehe, wären

  • Ein Decorator für ModelManager (mit 57 public functions)
  • Ein PR, der \Shopware\Components\Model\Generator in den Container umzieht (und auf merge warten und dann den Shop updaten, findet unser Kunde vielleicht nicht so toll)

Für kreative Vorschläge wäre ich sehr dankbar!

Ich denke auch das du einen Decorator schreiben musst. Wenn du die 57 Methoden nicht alle runter schreiben willst helfen wie vielleicht diese magic methods von PHP. Damit müsstest du das halbwegs dynamsich und ohne viel Code hinbekommen.

Du könntest den models Service dekorieren und bei createModelGenerator deine angepasste Instanz von ModelGenerator zurückgeben. Am besten erstellst du einen PR mit der Container Erweitrerung. Evtl. sogar die Pfade via Parameter Collection rein geben, damit man Sie via CompilerPass erweitern kann  Halo

Ich habe für den Fall auch mal ein Issue angelegt Shopware Issuetracker