ค้นหา codebase สำหรับให้UninstallInterface
\Magento\Setup\Model\UninstallCollector
หากคุณค้นหาแล้วคุณจะพบว่าของที่ใช้ในการUninstallCollector
\Magento\Setup\Console\Command\ModuleUninstallCommand
มีความเกี่ยวข้องโดยเฉพาะ:
$uninstalls = $this->collector->collectUninstall();
$setupModel = $this->objectManager->get('Magento\Setup\Module\Setup');
foreach ($modules as $module) {
if (isset($uninstalls[$module])) {
$output->writeln("<info>Removing data of $module</info>");
$uninstalls[$module]->uninstall(
$setupModel,
new ModuleContext($this->moduleResource->getDbVersion($module) ?: '')
);
} else {
$output->writeln("<info>No data to clear in $module</info>");
}
}
รวบรวมกันเราสามารถคาดเดา:
- โมดูลของคุณควรมีระดับที่
Uninstall
{module}\Setup\Uninstall.php
Magento\Framework\Setup\UninstallInterface
ชั้นนี้ควรใช้
- คลาสนี้ควรมี
uninstall
วิธีการที่มีตรรกะที่จำเป็น
- วัตถุและวิธีการเดียวกันนี้มีให้สำหรับคุณเช่นเดียวกับในสคริปต์การตั้งค่าหรืออัปเกรด
ดังนั้นนี่คือโครงกระดูกของคุณ:
<?php
namespace \Custom\Module\Setup;
class Uninstall implements \Magento\Framework\Setup\UninstallInterface
{
/**
* Module uninstall code
*
* @param \Magento\Framework\Setup\SchemaSetupInterface $setup
* @param \Magento\Framework\Setup\ModuleContextInterface $context
* @return void
*/
public function uninstall(
\Magento\Framework\Setup\SchemaSetupInterface $setup,
\Magento\Framework\Setup\ModuleContextInterface $context
) {
$setup->startSetup();
// Uninstall logic here
$setup->endSetup();
}
}
ลบตารางคอลัมน์หรือข้อมูลใด ๆ โดยใช้วิธีการที่เหมาะสม ดูที่มีอยู่เป็น\Magento\Framework\DB\Adapter\AdapterInterface
$setup->getConnection()