Hallo, ich habe mehrere Plugins geschrieben die von einem meiner Plugins abhängig sind. Um nicht in jedem Plugin gewisse Einstellungen vorzunehmen sollen die Plugins alle die Einstellungen aus dem holen von welchem sie Abhängig sind. Ist das prinzipiell möglich? Wie Kann man in Plugins untereinander auf Variablen eines andeen Plugins zugreifen? Speziell auf die von $config = $this->Config(); des Hauptplugins? Notlösung wäre das das „Haupt Plugin“ view Variablen setzt, worauf die anderen Plugins zugreifen. Dafür wäre es aber erforderlich, die Reihenfolge in der die Plugins bei event Hook ausgeführt weden beeinflussbar sein muss. Wäre so etwas möglich? $event = $this-\>subscribeEvent( 'Enlight\_Controller\_Action\_PostDispatch', 'onPostDispatch' // hier irgendwie mitteilen das er dies vor allen anderen plugins ausführen soll ???? );
Gruß Florian
Hey Florian, hast du es schonmal hiermit probiert? $config = Shopware()-\>Plugins()-\>Backend()-\>NameDeinesPlugin()-\>Config()-\>toArray();
Danke für die schnelle Antwort. Klappt so leider nicht bei mir. Mein Plugin sieht wie folgt aus: class Shopware\_Plugins\_Frontend\_WeMeinPlugin\_Bootstrap extends Shopware\_Components\_Plugin\_Bootstrap { public function install() { $event = $this-\>subscribeEvent( 'Enlight\_Controller\_Action\_PostDispatch', 'onPostDispatch' ); $form = $this-\>Form(); $parent = $this-\>Forms()-\>findOneBy(array('name' =\> 'Frontend')); $form-\>setParent($parent); $form-\>setElement('number', 'irgendwas', array( 'label' =\> 'Abfrage einer ID', 'value' =\> 6 )); return true; }
Aus einem anderen Plugin habe ich nun folgendes versucht: $test = Shopware()-\>Plugins()-\>Backend()-\>WeMeinPlugin()-\>Config()-\>irgendwas;
leider ohne Erfolg. Mache ich evtl. etwas falsch? Habe das ganze jetzt so gelößt, das die Plugins in der Ausführungsreihenfolge sortiert werden sprich das Plugin mit der “globalen Variable” die in allen anderen Plugins genutzt werden soll habe ich dort definiert und der View zugewiesen. Hauptplugin: $event = $this-\>subscribeEvent( 'Enlight\_Controller\_Action\_PostDispatch', 'onPostDispatch', 0 ); );
Abhängiges Plugin: $event = $this-\>subscribeEvent( 'Enlight\_Controller\_Action\_PostDispatch', 'onPostDispatch', 1 );
Gruß Florian
Hey Florian, ich habe das ganze mal getestet und bei mir funtioniert es. Das Plugin, dessen Config ich abfrage, ist installiert und aktiv. Ich habe das ganze in einem Hook mit dem Code, den ich eben gepostet habe, aufgerufen.
Super ich danke dir es klappt nun. Hatte anstatt auf das Plugin()->Frontend()->… auf Backend zugegriffen dort lag der Fehler. Gruß Florian
Kein Problem. Schön, dass es jetzt funktioniert