Поля модуля Magento2 все еще видны в админке после отключения модуля - PullRequest
1 голос
/ 06 июля 2019

У меня возникла проблема при попытке отключить модуль Magento2 , из-за которого пользовательские значения по-прежнему видны на странице редактирования клиента.

Я хотел бы знать, что мне нужно сделатьполностью избавиться от модуля и его данных из системы Magento2.

Версия Magento: 2.3.2Версия PHP: 7.2.19


Пользовательский (собственный) модуль Magento2 был установлен:

  • Копирование кода: приложение / код / ​​VENDOR / MODULE
  • Выполнение: модуль magento: включить VENDOR_MODULE
  • Запуск настройки magento: обновление

Этот модуль создает пару атрибутов Customer EAV, которые правильно отображаются в форме редактирования клиента.Я могу заполнить / сохранить / обновить значения успешно.


Я отключаю модуль следующим образом:

  • Работает: модуль magento: отключить VENDOR_MODULE
  • Запуск настройки magento: обновление
  • Полное удаление каталога app / code / VENDOR / MODULE

Когда я возвращаюсь обратно на страницу редактирования клиента я все еще вижу атрибуты, видимый и заполненный ранее введенными данными .

На этом этапе я попробовал следующее:

  • Удаление записи вручную в setup_module.
  • Включаяa Класс удаления.
  • Комбинация magento cache: clean && magento setup: di: compile.

Присоединенные классы:

InstallData.php

namespace VENDOR\MODULE\Setup;

use Magento\Framework\Setup\InstallDataInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
use Magento\Customer\Model\Customer;
use Magento\Customer\Setup\CustomerSetupFactory;

class InstallData implements InstallDataInterface {

    private $customerSetupFactory;

    /**
     * Constructor
     *
     * @param \Magento\Customer\Setup\CustomerSetupFactory $customerSetupFactory
     */
    public function __construct(CustomerSetupFactory $customerSetupFactory) {
        $this->customerSetupFactory = $customerSetupFactory;
    }

    /**
     * {@inheritdoc}
     */
    public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context) {
        $this->installModule1($setup, $context);
        $this->installModule2($setup, $context);
    }

    private function installModule1(ModuleDataSetupInterface $setup, ModuleContextInterface $context) {
        $customerSetup = $this->customerSetupFactory->create(['setup' => $setup]);

        $customerSetup->addAttribute(\Magento\Customer\Model\Customer::ENTITY, 'module1', [
            'type' => 'varchar',
            'label' => 'Module1 label',
            'input' => 'text',
            'source' => '',
            'required' => false,
            'visible' => true,
            'position' => 500,
            'system' => false,
            'backend' => ''
        ]);
        
        $attribute = $customerSetup->getEavConfig()->getAttribute('customer', 'module1')
        ->addData(['used_in_forms' => [
                'adminhtml_customer',
                'adminhtml_checkout',
                'customer_account_create',
                'customer_account_edit'
            ]
        ]);
        $attribute->save();
    }

    private function installModule1(ModuleDataSetupInterface $setup, ModuleContextInterface $context) {
        $customerSetup = $this->customerSetupFactory->create(['setup' => $setup]);

        $customerSetup->addAttribute(\Magento\Customer\Model\Customer::ENTITY, 'module2', [
            'type' => 'varchar',
            'label' => 'Module2 label',
            'input' => 'text',
            'source' => '',
            'required' => false,
            'visible' => true,
            'position' => 500,
            'system' => false,
            'backend' => ''
        ]);
        
        $attribute = $customerSetup->getEavConfig()->getAttribute('customer', 'module2')
        ->addData(['used_in_forms' => [
                'adminhtml_customer',
                'adminhtml_checkout',
                'customer_account_create',
                'customer_account_edit'
            ]
        ]);
        $attribute->save();
    }
}

Uninstall.php

namespace VENDOR\MODULE\Setup;

use Magento\Framework\DB\Adapter\AdapterInterface;
use Magento\Framework\Db\Select;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\SchemaSetupInterface;
use Magento\Framework\Setup\UninstallInterface;
use Magento\Eav\Setup\EavSetupFactory;
use Magento\Framework\Setup\ModuleDataSetupInterface;

class Uninstall implements UninstallInterface {
    private $_eavSetupFactory;
    private $_mDSetup;

    public function __construct(EavSetupFactory $eavSetupFactory, ModuleDataSetupInterface $mDSetup) {
        $this->_eavSetupFactory = $eavSetupFactory;
        $this->_mDSetup = $mDSetup;
    }

    public function uninstall(SchemaSetupInterface $setup, ModuleContextInterface $context) {
        $installer = $setup;
        $eavSetup = $this->_eavSetupFactory->create(['setup' => $this->_mDSetup]);
        $eavSetup->removeAttribute(\Magento\Catalog\Model\Customer::ENTITY, 'module1');
        $eavSetup->removeAttribute(\Magento\Catalog\Model\Customer::ENTITY, 'module2');
    }
}

1 Ответ

0 голосов
/ 09 июля 2019

Для атрибутов Customer вам необходимо удалить определенную запись атрибутов из таблицы "eav_attribute", которую вы можете искать по "attribute_code", и удалить эту строку, вам нужно удалить атрибуты из базы данных, поскольку в admin нет функции для удаления атрибута.

...