#magento #magento2
#magento #magento2
Вопрос:
Я создал пользовательские атрибуты клиента для внутреннего использования, я имею в виду, которые доступны только для администратора на серверной части. Проблема в том, что если пользователь обновляет свой адрес электронной почты или пароль из своей учетной записи, эти пользовательские атрибуты стираются… Буквально пусто. С другой стороны, если я изменяю адрес электронной почты или пароль для пользователя из серверной части, эти поля остаются нетронутыми, я имею в виду, что информация не стирается.
Вот как я создал атрибуты:
<?php
namespace VendorModuleSetup;
use MagentoEavSetupEavSetup;
use MagentoEavSetupEavSetupFactory;
use MagentoFrameworkSetupInstallDataInterface;
use MagentoFrameworkSetupModuleContextInterface;
use MagentoFrameworkSetupModuleDataSetupInterface;
use MagentoEavModelConfig;
use MagentoCustomerModelCustomer;
class InstallData implements InstallDataInterface {
/**
* EAV setup factory
*
* @var MagentoEavSetupEavSetupFactory
*/
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(MagentoCustomerModelCustomer::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 дня пытаюсь понять, что происходит. Не могли бы вы помочь, пожалуйста?
С уважением!
Ответ №1:
Пожалуйста, замените приведенный ниже код:
$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']);
А затем попробуйте создать атрибут. Для повторного создания, пожалуйста, сначала удалите запись модуля из таблицы setup_module, а затем запустите команду обновления.
Комментарии:
1. Чувак! Это работает как шарм!. Я просто удаляю атрибуты, а не запись из setup_module. Спасибо!
2. Рад слышать, что ваша проблема была решена. Пожалуйста, примите ответ.