Event beim Speichern der Einstellungen eines Plugins?

@mowlwurf schrieb:

SELECT cp.name
FROM s_core_plugins cp
JOIN s_core_config_forms cf ON cf.plugin_id = cp.id
JOIN s_core_config_elements ce ON ce.form_id = cf.id
WHERE ce.id = :element_id

Ich hoffe das hilft dir weiter.  Smile

Hallo mowlwurf,

 

vielen dank für das Statement. Das ist genau das, was ich gesucht habe. Anbei der komplette Code, falls jemad bei Speichern von Plugineinstellungen seinen Cache gleich aufräumen möchte.

class Shopware_Plugins_Frontend_meinPluginAlsFooBar_Bootstrap extends Shopware_Components_Plugin_Bootstrap {
    private $lastSave = false;

// Event registrieren
    private function subscribeEvents() {
        $this->subscribeEvent('Shopware_Controllers_Backend_Config_After_Save_Config_Element', 'afterSaveConfig');
    }

// und die Funktion für das Event. wird für jedes FormularFeld aufgerufen
    public function afterSaveConfig(Enlight_Event_EventArgs $data) {
        if (!$this->lastSave) {
            $select = "SELECT cp.name FROM s_core_plugins cp
                    JOIN s_core_config_forms cf ON cf.plugin_id = cp.id
                    JOIN s_core_config_elements ce ON ce.form_id = cf.id
                    WHERE ce.id = :element_id";

            /** @var $element Shopware/Models/Config/Element */
            $element = $data->get('element');
            $id = $element->getId();

            $result = Shopware()->Db()->fetchRow($select, [':element_id' => $id]);
            if ($result && $result['name'] == 'meinPluginAlsFooBar') {
                $cacheManager = Shopware()->Container()->get('shopware.cache_manager');
                $cacheManager->clearConfigCache();
                $cacheManager->clearHttpCache();
                $this->lastSave = true;
            }
        }
    }
}

Wenn das keinen Sinn macht, oder es da eine einfachere Lösung gibt, bitte Bescheid geben. Mich hat es nur genervt, das ich immer den Cache löschen bzw. das Theme neu kompilieren muss, wenn ich was an den Einstellungen (z.B. Farben die ans less übergeben werden) ändere.

Gruß
daMardl