Gelöst: Problem mit Shop-ID in Plugins unter 5.5.4

Moin,

ich stehe gerade ein wenig auf dem Schlauch.
Bisher hole ich mir für den Configreader im neuen Pluginsystem die ShopId so (in der PluginName.php).

$this->container->get('Shop')

Beim Rumtesten für eine neues kleines Bastelprojekt bekomme ich nun aber *nichts* zurückgegeben, kann also keine Plugin-Config auslesen, wenn ich den Scope benötige.
In einem anderen Plugin im „echten“ Shop geht das so aber nach wie vor noch.

Auch wenn ich es so wie in der Doku Plugin configuration mache, bekomme ich keinen Wert.

Weiter war mich auch erst später aufgefallen, dass nach dem Update auf 5.5.4 ein Cron nicht mehr lief, weil der auch kein „Shop“ mehr zur Verfügung steht.
Wie komme ich für den Configreader denn nun an den „Shop“?

private function getConfiguration() {
        /** return Plugin-Configuration from current shop */
        
        return $this->container->get('shopware.plugin.cached_config_reader')->getByPluginName($this->getName(), $this->container->get('Shop'));
    }

Hat sich da bei 5.5 was geändert? Gibts da einen Bug?

Glaube im Cron-Kontext musst du den Shop-Kontext erst erzeugen. Hatte das mal hier gemacht:

Bin aber selbst auch nur Hobby Bastler. 

Nee, Cron war nur beiläufig - da habe ich den „shop“ rausgenommen - macht beim Cron ja auch keinen Sinn.

Hier geht es z.B. um einen Aufruf aus Enlight_Controller_Action_PreDispatch_Frontend_Checkout und Enlight_Controller_Action_PostDispatch_Frontend_Detail
Ein die($this->container->get(‚Shop‘)); im Event liefert auch einfach *nichts*
Aber auch ohne Shop-Scope liefert mir der Configreader gerade keine Plugin-Config.
Keine Ahnung, was da grad krumm läuft  Undecided

Wo genau hast du den Code denn? 
In einem eigenen Subscriber? Oder direkt in der Bootstrap/plugin.php?

Im Subscriber musst du den Container auf jeden Fall im Construct erzeugen: MNCountryRiskRule/CustomRule.php at master · mnaczenski/MNCountryRiskRule · GitHub

Und auch mit übergeben: MNCountryRiskRule/services.xml at master · mnaczenski/MNCountryRiskRule · GitHub

1 „Gefällt mir“

Direkt in der „Bootstrap“.php, ganz ohne Subscriber & XML.
Den „Teil“ nehme ich mir mit Copy & Paste eigentlich immer aus einem meiner anderen Plugins raus.
die(var_dump($this->container)) gibt ja auch Inhalte aus. Auch die(var_dump($this->container->get(‚Shop‘))); gibt einen Dump - also ist der „Shop“ doch da, dann hat der Configreader wohl nen Schuss  Undecided

Kann geschlossen werden… Depp vor Computer.
Im onPostDispatchDetail hat sich heimlich ein $  direkt vor einen Kommentar geschummelt - darum wurde dann die Var *falsch* zugewiesen.
*Rot werd* und ein schönes WE

$/** get Plugin-Configuration */

        $pluginConfig = $this->getPluginConfiguration();

        die(var_dump($pluginConfig));