Plugin, das SQL ausführt

Hallo,

ich bin auf der Suche nach einer Möglichkeit, dass man in einem Plugin eine bestimmte SQL ausführt, also nicht bei der Installation, sondern beim „speichern“ der Plugin Configs. Ich dachte erst an CronJob, allerdings sollte die SQL „relativ“ einmalig sein. Hat jemand eine Idee? THX und Gruss.

Hallo brettvormkopp,

das Problem dabei, eine Aktion auszuführen sobald die Pluginkonfiguration gespeichert wird, ist folgendes:
Die Pluginkonfiguration kann gespeichert werden auch wenn dein Plugin gar nicht aktiv ist. Wenn dein Plugin allerdings nicht aktiv ist wird auch kein Event ausgeführt und du kannst nicht eingreifen.

Wenn dich das nicht stört und du die SQL Abfrage nur bei aktiviertem Plugin ausführen willst könntest du dich an das “Enlight_Controller_Action_PostDispatchSecure_Backend_Config_SaveForm” Event anhängen. Dort müsstest du Abfragen, ob das gespeicherte Formular zu deinem Plugin gehört und ggf. dann deine Aktion ausführen.

Viele Grüße

1 Like

Wenn es nicht im Backend sein muss würde ich dafür ein command für die console registrieren.

http://community.shopware.com/Shopware-CLI_detail_1650.html#Code_Beispiel Ist glaube ich nicht mehr ganz aktuell, aber eine neue habe ich gerade nicht gefunden.

@simkli‍  Danke für den Tip. Hast du zufällig eine Resource woher du die Eventbezeichung her hast?

@t2oh4e‍ Danke für den Tip, es soll jedoch ein Plugin sein.

@brettvormkopp schrieb:

@simkli‍  Danke für den Tip. Hast du zufällig eine Resource woher du die Eventbezeichung her hast?

An diese Frage schließe ich mich mal mit an. In der SW 5.2.x. konnte ich diese Bezeichnung (Enlight_Controller_Action_PostDispatchSecure_Backend_Config_SaveForm) nicht finden. 

@R4M schrieb:

@brettvormkopp schrieb:

@simkli‍  Danke für den Tip. Hast du zufällig eine Resource woher du die Eventbezeichung her hast?

An diese Frage schließe ich mich mal mit an. In der SW 5.2.x. konnte ich diese Bezeichnung (Enlight_Controller_Action_PostDispatchSecure_Backend_Config_SaveForm) nicht finden. 

Das wird ja in der Form auch nirgendwo zu finden sein. Der Part “Enlight_Controller_Action_PostDispatchSecure” ist gleicvch für all/viele Event, danach kommt das Modul (_Backend), dann der Controller (_Config), dann die Action (_SaveForm).
Anderes Beispiel:  Enlight_Controller_Action_PostDispatchSecure_Frontend_Detail -> wird im Frontend auf der Artikeldetailseite aufgerufen, nach dem alle Daten vorbereitet wurden. Usw.

Statt “Enlight_Controller_Action_PostDispatchSecure” kann es auch folgende geben:

Enlight_Controller_Action_PreDispatch - wird davor aufgerufen ()
Enlight_Controller_Action_PostDispatch - wird danach aufgerufen

Nun ja, so weit ist das schon klar, aber ich konnte selbst die Action „SaveForm“ nicht finden, deshalb finde ich die Nachfrage schon gerechtfertigt.

@R4M schrieb:

Nun ja, so weit ist das schon klar, aber ich konnte selbst die Action „SaveForm“ nicht finden, deshalb finde ich die Nachfrage schon gerechtfertigt.

Ohne Zweifel ist die Nachfrage gerechtfertigt!!

Hier findest Du die saveFormAction: /engine/Shopware/Controllers/Backend/Config.php

Wobei /Backend für „_Backend“ steht, /Config.php für „_Config“ und „SaveFormAction“ für _SaveForm" (das Wort „Action“ wird in den Events, Urls usw nicht verwendet)

Ich schau mal ob der Hinweis auch Früchte trägt. Danke erst mal!