Shopware Plugin-Konfiguration - eigenes Textfeld im Plugin

Hallo, ich hätte eine Frage zur Shopware Plugin-Konfiguration und zwar habe ich mir im Developer`s Guide die Anleitung angesehen und konnte meinem Plugin auch ein entsprechendes Textfeld schenken. Das Problem ist nun folgendes: Wenn ich das Plugin in der Administration installiere bzw. aktiviere und mein Textfeld leer lasse beim ersten Abspeichern, übernimmt Shopware nicht den Wert beim zweiten, dritten, usw. Abspeichern, wenn ich einen Wert eingegeben habe. Beim ersten Mal klappt es immer und ich kann über $config = Shopware()-\>Plugins()-\>Backend()-\>MyPlugin()-\>Config(); echo $config-\>affiliateid; auf meinen eingegebenen Wert zugreifen. Was mache ich also falsch? Hier mein Code: <?php class Shopware_Plugins_Backend_MyPlugin_Bootstrap extends Shopware_Components_Plugin_Bootstrap { public function install() { $event = $this->createHook( 'sBasket', // Klassenname des Objekts, welches wir überladen wollen 'sAddVoucher', // Name der Methode, die wir modifizieren wollen 'onAddVoucher', // Name der lokalen, statischen Methode, die unsere Änderungen beeinhaltet Enlight\_Hook\_HookHandler::TypeBefore, // Unsere Methode wird NACH der Original-Methode aufgerufen 0 // Ausführungsposition ); $this-\>subscribeHook($event); // registriere neuen Hook $form = $this-\>Form(); $form-\>setElement('text', 'affiliateid', array('label'=\>'Affiliate-ID', 'value' =\> 'Ihre Affiliate-Id')); $form-\>save(); return true; } static function onAddVoucher(Enlight\_Hook\_HookArgs $args) { $config = Shopware()-\>Plugins()-\>Backend()-\>MyPlugin()-\>Config(); echo $config-\>affiliateid; ... return true; } } Danke Patrick

Ist es nicht so, dass um Konfigdaten zu überschreiben, du das Plugin deinstallieren und wieder installieren musst?

Hallo, funktionieren tut das in jedem Fall, aber es wäre ärgerlich, wenn man das Plugin dafür erst wieder deinstallieren müsste.

Ja ist aber doch logisch wenn du neue Felder hinzufügen willst das du das Plugin deinstallieren und neu installieren musst. Wie sollen sonst die Felder angelegt werden. Der Installer wird ja nicht immer aufgerufen sondern wie der Name schon sagt nur beim installieren :slight_smile:

1 Like

Ok, für mich und andere vielleicht einleuchtend - das Plugin wird aber letztendlich von “anderen” Menschen verwendet und wenn die bei der Installation vergessen das Feld auszufüllen oder sich verschreiben… Klar kann man denen dann mitteilen, dass das Plugin neu installiert werden muss. Das ist für meinen Geschmack aber ein Klick zuviel und von der Usability her nicht so toll. Gibt es da keine eine andere Lösung? Stelle sich einer vor, man hat ca. 10 oder mehr Konfigurationseinstellungen, wenn sich nur eine davon aus unerfindlichen Gründen mit der Zeit ändert, müsste man alle neu eingeben…

Hallo, ich glaube hier ist ein kleines Missverständnis im Raum. Du musst das Plugin lediglich neuinstallieren, wenn du ein weiteres Element dem Plugin hinzufügst. Wenn du den gespeicherten Wert ändern willst, musst du das Plugin nicht neuinstallieren. Wenn ich dich richtig verstehe, ist dein Problem also, dass nur der erste eingebene Wert gespeichert wird, alle weiteren Änderungen bleiben unwirksam, richtig? Gruß, Patrick :shopware:

1 Like

Hallo, wie eingangs erwähnt, ist das genau mein Problem - ich kann den Wert ändern, jedoch wird dieser an entsprechender Stelle nicht wirksam. Meinen Code hatte ich oben geposted - fragt sich nur, woran es liegt. Danke! Patrick

Hallo, du könntest entsprechend einmal schauen, ob sich der Wert in der Datenbank wenigstens aktualisiert. In der Tabelle s_core_plugin_configs werden diese Werte im Normalfall gespeichert. Gruß, Patrick :shopware:

Hallo, in der entsprechender Tabelle steht immer auch der aktualisierte Wert. Erst wenn ich den Cache leere, übernimmt Shopware auch den neuen Wert. Ok, ich habe das Plugin im Ordner …/Plugins/Community/Backend/MyPlugin/ angelegt, obwohl ich auf den Bestellvorgang im Frontend zugreifen. Müsste es daher nicht im Ordner Frontend gespeichert werden? Ob das Problem damit zusammenhängt? Ich werde es einmal testen…