Eigene Kategorie-Attribute anlegen

Hallo,

ich habe ein Problem mit einem eigenen Attribut in der Tabelle <s_categories_attributes>.</s_categories_attributes>

Betrifft:

  • Eigenes Plugin welches diese Spalte anlegen und löschen soll
  • Speziellen Kundenshop
  • Shopware 4.3.2

Sobald ich das Plugin installiere erscheint die Fehlermeldung, dass das Plugin nicht erfolgreich installiert werden konnte.

Die zusätzlich angelegte Spalte ist in der Datenbank allerdings vorhanden. Daraufhin kommentiere ich den Source-Code aus, sodass die Installation ohne das Anlegen des zusätzlichen Attributes durchgeführt wird. Die Installation ist nun erfolgreich:

  • Fehlermeldung -> zusätzliches Attribut ist in Datenbank vorhanden
  • Plugin funktioniert wie erwartet

Genau dasselbe Phänomen triff auch bei dem Deinstallieren des Plugins auf.

  1. Fehlermeldung, aber die zusätzliche Spalte wurde gelöscht. (manchmal auch “einfach” garkeine Reaktion, weder Fehler noch erfolgreich)

  2. Remove Spalte wird auskommentiert -> Deinstallation “erfolgreich”

 

Ich habe exakt dieses Plugin auf einen frisch aufgesetzten 4.3.2 Shop ohne Probleme installieren und deinstallieren können. Auch auf einen 4.3.6 Shop verlief dies ohne Probleme.

 

Nun habe ich dieses Plugin schon kopiert und den Name geändert, auch hier habe ich genau dasselbe Problem.

 

Meine Vermutung ist, dass Shopware irgendetwas cached (ggfls. durch einen Tippfehler bei Erstellung des Plugins) - Allerdings habe ich keine Ahnung wo.

 

APCu - Cache vom Server ist nicht aktiv

Zend OPCache -  ist ebenfalls nicht aktiv

Shopware-Cache - habe ich bereits mehrfach über Console geleert (/cache/)

 

Auch wenn ich eigtl. nicht glaube poste ich hier mal noch einen Auszug des Quellcodes:

 

    public function install()
    {
        $this->generateAdditionalAttributes(); // Erstelle zusätzliche Spalte
        $this->registerEvents();
        return true;
    }

    public function uninstall()
    {
        $this->removeAdditionalAttributes(); // Lösche die zusätzlich angelegte Spalte
        return true;
    }

    public function generateAdditionalAttributes()
    {
        $this->Application()->Models()->addAttribute('s_categories_attributes', 'inno', 'sortLatestAtFirst', 'BOOLEAN', false, '0');
        Shopware()->Models()->generateAttributeModels(array('s_categories_attributes'));
    }
    public function removeAdditionalAttributes()
    {
        $this->Application()->Models()->removeAttribute('s_categories_attributes', 'inno', 'sortLatestAtFirst');
        Shopware()->Models()->generateAttributeModels(array('s_categories_attributes'));
    }

Meta-Cache innerhalb der Funktionen leeren, sowie die Model-Proxies neu aufbauen bewirkt ebenfalls keine Besserung.

Ich hoffe mir kann hier jemand helfen, denn so würde ich dieses Plugin nur sehr ungern auf ein Live-System portieren.

 

Vielen Dank

Marco Schäfer