Anscheinend unterstützt Magento 2 jetzt Deinstallationsskripte, die eine Änderung des DB-Schemas beim Deinstallieren eines Moduls ermöglichen (horay !!).
Wie hier erklärt, funktioniert dies nur für Module, die über Composer installiert wurden.
(Ich hoffe, es wird in Zukunft für alle Module funktionieren, aber das ist ein anderes Thema).
Nehmen wir an, ich habe ein Modul namens Testing_Demo
.
Dieses Modul macht 3 Dinge, die ich bei der Deinstallation entfernen möchte.
- fügt eine Tabelle mit dem Namen hinzu
testing_demo
. Also muss ich es fallen lassen. - Fügt ein Produktattribut namens hinzu
demo
. Das muss also entfernt werden - enthält einige Einstellungen
system->configuration
, die möglicherweise in der Tabelle gespeichert sind oder nichtcore_config_data
. Alle diese Einstellungen haben den Pfadtesting_demo/...
. Also müssen diese auch entfernt werden.
Wie soll mein Modul-Deinstallationsskript aussehen?
module
magento2
install-script
composer
Marius
quelle
quelle
Antworten:
Durchsuchen der Codebasis nach
UninstallInterface
gives\Magento\Setup\Model\UninstallCollector
.Wenn Sie dann suchen
UninstallCollector
, werden Sie feststellen, dass es in verwendet wird\Magento\Setup\Console\Command\ModuleUninstallCommand
. Insbesondere relevant:Zusammengenommen können wir vermuten:
Uninstall
Klasse bei enthalten{module}\Setup\Uninstall.php
.Magento\Framework\Setup\UninstallInterface
.uninstall
Methode enthält alle notwendige Logik.Also, hier ist dein Skelett:
Entfernen Sie alle Tabellen, Spalten oder Daten mit den entsprechenden Methoden. Siehe
\Magento\Framework\DB\Adapter\AdapterInterface
, verfügbar als$setup->getConnection()
.quelle