По-видимому, теперь Magento 2 поддерживает сценарии удаления, которые позволяют изменять схему БД при удалении модуля (horay !!).
Как объясняется здесь, это работает только для модуля, установленного через композитор.
(Я надеюсь, что это будет работать в будущем для всех модулей, но это другая проблема).
Допустим, у меня есть модуль под названием Testing_Demo
.
Этот модуль делает 3 вещи, которые я хотел бы удалить при удалении.
- добавляет таблицу с именем
testing_demo
. Поэтому мне нужно бросить это. - добавляет атрибут продукта с именем
demo
. Так что это должно быть удалено - имеет некоторые настройки,
system->configuration
которые могут или не могут быть сохранены в таблицеcore_config_data
. Все эти настройки имеют путьtesting_demo/...
. Таким образом, они также должны быть удалены.
Как должен выглядеть скрипт удаления модуля?
module
magento2
install-script
composer
Мариус
источник
источник
Ответы:
Поиск кодовой базы для
UninstallInterface
трюков\Magento\Setup\Model\UninstallCollector
.Если вы ищете
UninstallCollector
, вы найдете, что используется в\Magento\Setup\Console\Command\ModuleUninstallCommand
. Особенно актуально:Вместе мы можем предположить:
Uninstall
класс в{module}\Setup\Uninstall.php
.Magento\Framework\Setup\UninstallInterface
.uninstall
метод, содержащий любую необходимую логику.Итак, вот ваш скелет:
Удалите все таблицы, столбцы или данные, используя соответствующие методы. Смотрите
\Magento\Framework\DB\Adapter\AdapterInterface
, доступно как$setup->getConnection()
.источник