Api Plugin -> auf Custom Models zugreifen?

Hallo,

ich stehe gerade kurz vor dem Wochenende glaube ich etwas auf dem Schlauch  Undecided Ich schreibe ein Plugin, dass die Api Funktionalität erweitert. Ich habe jedoch Probleme auf die CustomModels aus einem anderen Plugin zuzugreifen. Frage 1. Ist es möglich darauf zuzugreifen und Frage 2. Wie? 
Über use Shopware\CustomModels\Test\Test klappt es auf jedenfall nicht.

Viele Grüße und ein schönes Wochenende,

Thorsten

Hi,

es gibt ja in der Bootstrap die Möglichkeit, “registerCustomModels” aufzurufen. Wenn du auf die CustomModels des anderen Plugins nicht zugreifen kannst, hat es seine Models (noch) nicht registriert. Du hast dann prinzipiell zwei Möglichkeiten:

  1. Wenn das andere Plugin irgendwo eine public Methode hat, wo die Models aufgerufen werden, kannst du die Methode von deinem Plugin aus aufrufen: Shopware()->Plugins()->Core()->SwagDeinPlugin()->dieMethode()

  2. Du registrierst aus deinem Plugin heraus die Model des anderen Plugins:

         $this->Application()->Loader()->registerNamespace(
             'Shopware\CustomModels',
             $this->Path() . 'Models/'
         );
         $this->Application()->ModelAnnotations()->addPaths(
             array(
                 $this->Path() . 'Models/'
             )
         );
    

Allerdings musst du $this->Path() dann jeweils durch den Pfad des anderen Plugins ersetzen, was ggf. auch tricky sein kann, weil du ja ggf. nicht weißt, wo das Plugin abgelegt ist. Das kannst du dann in der s_core_plugins nachschauen.

Es ist also letztlich durchaus möglich - aber leider gibt es da noch keine Convenience-Methode für. Wenn Variante (1) für dich funktioniert, wäre das super.

Besten Gruß,

Daniel

1 Like

Hallo Daniel,

vielen Dank, genauso hatte ich es auch beim Repository gemacht (SwagDeinPlugin()->getRepository()). Dachte nur es würde vllt. einen besseren Weg geben.

Schönes Wochenende!