Hook greift nicht, erst nach "neuinstallation"

Hallo Leute,

ich baue gerade ein Plugin mit Hooks.

Ich leere nach der Aktivierung alle Caches mit CACHE_LIST_ALL.
Trotzdem greift mein Hook nicht. Erst wenn ich im Plugin einmal „neuinstallieren“ wähle, greift er.

public function activate(ActivateContext $context){
      $context->scheduleClearCache(ActivateContext::CACHE_LIST_DEFAULT);
      return true; 
    }

    public function install(InstallContext $context)
	  {   
      $context->scheduleClearCache(InstallContext::CACHE_LIST_DEFAULT);
      return true; 
    }
  
    public function uninstall(UninstallContext $context){
      $context->scheduleClearCache(UninstallContext::CACHE_LIST_DEFAULT);
      return true; 
    }

    public function update(UpdateContext $context){
      $context->scheduleClearCache(UpdateContext::CACHE_LIST_DEFAULT);
      return true; 
    }

Kann sich das jemand erkläen?

 

Gruß Yuri

Hallo Yuri,

im Text schreibst du zwar, du nutzt CACHE_LIST_ALL, aber in deinem Beispiel Code nicht. Was denn nun?  Smile Normalerweise sollte es ausreichen den Cache komplett zu leeren.

Viele Grüße aus Schöppingen

cool Michael Telgmann

1 „Gefällt mir“

Hallo Michael,

da hast du recht, ich hatte allerdings beides getestet und beides hatte nicht den gewünschten Effekt.

Ich habe es nun durch viel probieren hinbekommen, indem man so vorgeht:

public function activate(ActivateContext $context){

      // force clear Shopware Proxies
      $cacheManager = Shopware()->Container()->get('shopware.cache_manager');
      $cacheManager->clearProxyCache();

      $context->scheduleClearCache(ActivateContext::CACHE_LIST_DEFAULT);

      return true; 
    }

 

Erst wenn man den Cache doppelt leert, generiert sich die Datei sauber neu mit neuem array in der getHookMethods(). Die neuinstallation triggert irgendwie wohl dieses doppelte Cache leeren. Mein Versuch den Cache zu leeren einmal im install und einmal im activate funktioniert hingehen nicht.

Für mich riecht das nach einem Bug, aber ich kann es nicht belegen.

Gruß und danke schon mal!

 

 

Hallo Yuri,

der Cache Tag CACHE_TAG_PROXY ist eigentlich Teil der CACHE_LIST_DEFAULT. Daher sollte ein eigener Aufruf des CacheManagers nicht nötig sein. Falls das so nicht von alleine funktioniert, erstelle mal bitte dazu ein Ticket. Am besten mit Beispiel Plugin, damit wir das möglichst einfach nachvollziehen können.

Viele Grüße aus Schöppingen

cool Michael Telgmann

[@Michael Telgmann](http://forum.shopware.com/profile/17553/Michael Telgmann “Michael Telgmann”)‍ habe ich dir angelegt. Man kann leider keine zip hochladen. Hab euch daher das Testplugin ein ein Drive geladen. Wenn das nicht geht schreib mir bitte mal kurz privat. Wäre cool, wenn du dazu mal kurz Feedback hast, ob es ein Bug ist oder wir zu blöd :smiley:

Hi Yuri,

danke für das Erstellen. Ich hab die zip Datei heruntergeladen und an das Ticket gehangen. Die Jungs aus dem Shopware 5 werden sich dann anschauen.

Viele Grüße aus Schöppingen

cool Michael Telgmann