Aparentemente, ahora Magento 2 admite scripts de desinstalación que permiten la modificación del esquema db al desinstalar un módulo (¡horay!).
Como se explica aquí, esto solo funciona para el módulo instalado a través del compositor.
(Espero que funcione en el futuro para todos los módulos, pero ese es un problema diferente).
Digamos que tengo un módulo llamado Testing_Demo
.
Este módulo hace 3 cosas que me gustaría eliminar al desinstalarlo.
- agrega una tabla llamada
testing_demo
. Entonces necesito dejarlo caer. - agrega un atributo de producto llamado
demo
. Entonces esto necesita ser eliminado - tiene algunas configuraciones
system->configuration
que podrían o no estar almacenadas en la tablacore_config_data
. Todos estos ajustes tienen la rutatesting_demo/...
. Por lo tanto, estos también deben eliminarse.
¿Cómo debería ser el script de desinstalación de mi módulo?
module
magento2
install-script
composer
Marius
fuente
fuente
Respuestas:
Buscando en la base de código para
UninstallInterface
dar\Magento\Setup\Model\UninstallCollector
.Si busca
UninstallCollector
entonces, encontrará que se usa en\Magento\Setup\Console\Command\ModuleUninstallCommand
. Particularmente relevante:En conjunto, podemos suponer:
Uninstall
clase en{module}\Setup\Uninstall.php
.Magento\Framework\Setup\UninstallInterface
.uninstall
método que contenga cualquier lógica necesaria.Entonces, aquí está tu esqueleto:
Elimine las tablas, columnas o datos utilizando los métodos adecuados. Ver
\Magento\Framework\DB\Adapter\AdapterInterface
, disponible como$setup->getConnection()
.fuente