Najwyraźniej teraz Magento 2 obsługuje skrypty odinstalowujące, które pozwalają modyfikować schemat db podczas odinstalowywania modułu (horay !!).
Jak wyjaśniono tutaj, działa to tylko w przypadku modułu zainstalowanego przez kompozytora.
(Mam nadzieję, że będzie działać w przyszłości dla wszystkich modułów, ale to inny problem).
Powiedzmy, że mam moduł o nazwie Testing_Demo
.
Ten moduł wykonuje 3 rzeczy, które chciałbym usunąć podczas odinstalowywania.
- dodaje tabelę o nazwie
testing_demo
. Więc muszę to upuścić. - dodaje atrybut produktu o nazwie
demo
. Więc to musi zostać usunięte - ma pewne ustawienia,
system->configuration
które mogą, ale nie muszą być przechowywane w tabelicore_config_data
. Wszystkie te ustawienia mają ścieżkętesting_demo/...
. Dlatego należy je również usunąć.
Jak powinien wyglądać skrypt odinstalowujący moduł?
module
magento2
install-script
composer
Marius
źródło
źródło
Odpowiedzi:
Przeszukiwanie bazy kodowej pod kątem
UninstallInterface
daje\Magento\Setup\Model\UninstallCollector
.Jeśli tak
UninstallCollector
, to zauważysz, że jest używany w\Magento\Setup\Console\Command\ModuleUninstallCommand
. Szczególnie istotne:Podsumowując, możemy przypuszczać:
Uninstall
klasę na{module}\Setup\Uninstall.php
.Magento\Framework\Setup\UninstallInterface
.uninstall
metodę zawierającą niezbędną logikę.Oto twój szkielet:
Usuń wszystkie tabele, kolumny lub dane przy użyciu odpowiednich metod. Zobacz
\Magento\Framework\DB\Adapter\AdapterInterface
dostępne jako$setup->getConnection()
.źródło