Hallo! Kann man mit dem Dependency Container auf die Plugin-Konfiguration eines bestimmten Plugins zugreifen und falls ja, wie? Ich dachte an etwas wie: Shopware()-\>Container()-\>get('plugins')-\>get('myPlugin')-\>get('config') // get sowas oder ähnliches?
Danke für alle hilfreichen Antworten!
so mach ich das. // Backend $cfg = Shopware()-\>Plugins()-\>Backend()-\>PluginName()-\>Config(); // Frontend $cfg = Shopware()-\>Plugins()-\>Frontend()-\>PluginName()-\>Config(); $var = $cfg-\>var;
Hallo, der Mix aus Beidem macht’s. Der zuvor genannte Weg ist natürlich auch in Ordnung und würde funktionieren, beinhaltet aber noch keinen DI-Container. So dürfte es gehen: Shopware()-\>Container()-\>get('plugins')-\>Frontend()|Backend()|Core()-\>PluginName()-\>get('config\_name');
Du musst hier natürlich noch drei Werte anpassen: 1. Backend/Core/Frontend, je nachdem, wo das Plugin liegt 2. Der technische Pluginname selbst, zum Beispiel SwagBonusSystem 3. Der Name der Config, bspw. „votedisable“ Übrigens: In der Bootstrap kannst du statt „Shopware()->Container()“ auch einfach „$this“ nutzen, also: $this-\>get('plugins')...
Gruß, Patrick :shopware:
[quote=„Patrick Stahl“]Hallo, der Mix aus Beidem macht’s. Der zuvor genannte Weg ist natürlich auch in Ordnung und würde funktionieren, beinhaltet aber noch keinen DI-Container. So dürfte es gehen: Shopware()-\>Container()-\>get('plugins')-\>Frontend()|Backend()|Core()-\>PluginName()-\>get('config\_name');
Du musst hier natürlich noch drei Werte anpassen: 1. Backend/Core/Frontend, je nachdem, wo das Plugin liegt 2. Der technische Pluginname selbst, zum Beispiel SwagBonusSystem 3. Der Name der Config, bspw. „votedisable“ Übrigens: In der Bootstrap kannst du statt „Shopware()->Container()“ auch einfach „$this“ nutzen, also: $this-\>get('plugins')...
Gruß, Patrick :shopware:[/quote] Gibt es irgendwo eine Liste mit den möglichen Configs? Ich möchte mir die Plugin-Konfiguration aus dem Backend holen. Bspw. habe ich in der Bootstrap ein text-Element mit dem Namen ‚host‘ ($form->setElement(‚text‘, ‚host‘ …). Wie könnte ich darauf zugreifen? Grüße
[quote=„DenKon26“]Gibt es irgendwo eine Liste mit den möglichen Configs?[/quote] config_name durch host ersetzen dann sollte es gehen. Gruß
Hi, das Konfigurationssystem an sich hat mit den sog. Namespaces übrigens auch die Möglichkeit, direkt bestimmte Plugins abzufragen. Statt Shopware()-\>Plugins()-\>Frontend()-\>MeinPlugin()-\>Config()-\>get('foo')
kann man entsprechend auch schlicht schreiben: Shopware()-\>Config()-\>getByNamespace('MeinPlugin', 'foo')
Oder analog natürlich über den Container: $container-\>get('config')-\>getByNamespace('MeinPlugin', 'foo')
Daniel
[quote=„Daniel Nögel“]Hi, das Konfigurationssystem an sich hat mit den sog. Namespaces übrigens auch die Möglichkeit, direkt bestimmte Plugins abzufragen. Statt Shopware()-\>Plugins()-\>Frontend()-\>MeinPlugin()-\>Config()-\>get('foo')
kann man entsprechend auch schlicht schreiben: Shopware()-\>Config()-\>getByNamespace('MeinPlugin', 'foo')
Oder analog natürlich über den Container: $container-\>get('config')-\>getByNamespace('MeinPlugin', 'foo')
Daniel[/quote] Der Zugriff ist verständlich. Allerdings scheint dies ein Zugriff auf die Standard-Konfiguration? Ich habe Replace-Hooks meines Plugins auf Subscriber ausgelagert. Frage ich nun mit dem Container ein Feld der Konfiguration ab, so erhalte ich nicht die geänderte Konfiguration, sondern den Standard-Wert.
Hi, grundsätzlich wird die Konfiguration (Shopware()->Config()) immer abhängig vom derzeit aktiven Subshop geladen. Vom Subshop ist dann abhängig, ob dessen Konfiguration geladen wird, oder es einen Fallback auf den Standard-Wert gibt. Wenn sich das bei dir merkwürdig verhält, kannst du dir Shopware()->Config() ja einmal ausgeben lassen, dann siehst du die ganzen Werte und Namespaces, die geladen sind. Besten Gruß, Daniel
Okay Problem behoben. Es lag aber an einer anderen Sache und zwar dem, dass der CamelCase nicht unterstützt wurde. Ich musste die Felder der Plugin-Konfiguration entsprechend von CamelCase in Namen mit Unterstrichen ändern.
Allerdings scheint es doch noch ein Problem zu geben. Nämlich mit dem Cache… Offenbar muss nach jeder Änderung eines Feldes der Plugin-Konfiguration der Shop-Cache geleert werden, da sonst ein alter Wert genommen wird. Kann man das irgendwie umgehen oder warum wird nicht der neuste Werte abgerufen?
[quote=„DenKon26“]Kann man das irgendwie umgehen oder warum wird nicht der neuste Werte abgerufen?[/quote] Im Normalfall ändert man doch nicht alle paar Minuten die Plugin Konfiguration oder? Gruß
In der Bootstrap kannst du auch mit $this->Config()->configname oder $this->Config()->get(‘configname’) auf die Konfigurationsfelder deiner Plugins zugreifen. Das Caching der Werte ist meiner Meinung nach nicht so schlimm, du änderst die Werte normalerweise ja nicht mehr, sobald das Plugin live ist.
Hi, das Caching ist das gleiche wie bei den Grundeinstellungen - der Config-Cache muss also nach Änderungen geleert werden. Daniel