更新电子邮件或密码时删除自定义客户属性

Custom customer attributes erase when updating email or password

我已经为内部使用创建了自定义客户属性,我的意思是,这些属性仅供后端管理员使用。问题是,如果用户从其帐户更新其电子邮件或密码,那么这些自定义属性将被删除……实际上是空的。另一方面,如果我从后端修改用户的电子邮件或密码,这些字段将保持不变,我的意思是,信息不会被删除。

这是我创建属性的方式:

<?php

namespace Vendor\Module\Setup;

use Magento\Eav\Setup\EavSetup;
use Magento\Eav\Setup\EavSetupFactory;
use Magento\Framework\Setup\InstallDataInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
use Magento\Eav\Model\Config;
use Magento\Customer\Model\Customer;

class InstallData implements InstallDataInterface {
    /**
     * EAV setup factory
     *
     * @var \Magento\Eav\Setup\EavSetupFactory
     */
    private $eavSetupFactory;

    public function __construct(EavSetupFactory $eavSetupFactory, Config $eavConfig)
    {
        $this->eavSetupFactory = $eavSetupFactory;
        $this->eavConfig       = $eavConfig;
    }

    public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
    {

        $eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);
        if (version_compare($context->getVersion(), '1.0.0') < 0){ 

            //Numero de Cliente
           $eavSetup -> addAttribute(\Magento\Customer\Model\Customer::ENTITY,
                'numcte',
                [
                    'label' => 'Numero de Cliente',
                    'system' => 0,
                    'position' => 100,
                    'sort_order' =>100,
                    'visible' =>  true,
                    'note' => '',
                    'type' => 'int',
                    'input' => 'text',

                ]
            );
            $numcte = $this->eavConfig->getAttribute(Customer::ENTITY, 'numcte');
            $numcte->setData('is_user_defined',1)->setData('is_required',0)->setData('default_value','')->setData('used_in_forms', ['adminhtml_customer', 'checkout_register', 'customer_account_create', 'customer_account_edit', 'adminhtml_checkout']);
            $numcte->save();

        }




    }

}

我可以在后端看到属性,实际上我在其他一些进程中使用这些值。但在这里,我真的对正在发生的事情感到疯狂。过去 2 天我一直在试图弄清楚发生了什么。你能帮忙吗?

亲切的问候!

请替换以下代码:

$numcte->setData('is_user_defined',1)->setData('is_required',0)->setData('default_value','')->setData('used_in_forms', ['adminhtml_customer', 'checkout_register', 'customer_account_create', 'customer_account_edit', 'adminhtml_checkout']);

有了这个:

$numcte->setData('is_user_defined',1)->setData('is_required',0)->setData('default_value','')->setData('used_in_forms', ['adminhtml_customer']);

然后尝试创建属性。对于 re-create,请先从 setup_module table 中删除模块条目,然后 运行 升级命令。