Magento 2.3.3 Проблема с адресом доставки клиента. "имя" обязательно

Резюме

Когда я пытаюсь разместить заказ после регистрации клиента / входа в систему. Magento 2.3.3 показывает: "Имя является обязательным полем. Ошибка. Поле имени не отображается. Когда я пытаюсь создать адрес доставки на странице профиля или в серверной части - поле имени отображается, но произошла такая же ошибка проверки!

Данные были перенесены из 1.9.3.4 с помощью инструмента переноса данных

Я читал о тех же проблемах в других версиях magento, но решений не найдено

Я пытаюсь поиграть с eav_attribute и customer_eav_attribute. Я поставил is_visible=1 и is_required=0, но это не помогает

Действия по воспроизведению

  1. Авторизоваться
  2. Порядок оформления заказа
  3. Заполните форму доставки
  4. Отображается ошибка: проверьте информацию об адресе доставки. "имя" обязательно. Войдите и попробуйте еще раз.

Скриншоты

Оформить заказ - имя скрыто

Профиль создать адрес доставки

Backend = customer edit - добавлен адрес доставки

2 ответа

У меня возникла эта проблема после перехода с Magenro 1.9 на Magento 2.3.3, для меня этот способ работает: запустите в командной строке mysql

выберите attribute_id,attribute_code из eav_attribute, где attribute_code="firstname";

это будет выглядеть так

затем выполните следующий запрос, не забудьте изменить attribute_id в зависимости от вашего конца:

INSERT INTO `customer_form_attribute` (`form_code`, `attribute_id`) VALUES ('adminhtml_checkout', '5');
INSERT INTO `customer_form_attribute` (`form_code`, `attribute_id`) VALUES ('adminhtml_customer_address', '5');
INSERT INTO `customer_form_attribute` (`form_code`, `attribute_id`) VALUES ('adminhtml_customer_address', '20'); 
INSERT INTO `customer_form_attribute` (`form_code`, `attribute_id`) VALUES ('customer_address_edit', '5'); 
INSERT INTO `customer_form_attribute` (`form_code`, `attribute_id`) VALUES ('customer_address_edit', '20');
INSERT INTO `customer_form_attribute` (`form_code`, `attribute_id`) VALUES ('customer_register_address', '20'); 
INSERT INTO `customer_form_attribute` (`form_code`, `attribute_id`) VALUES ('customer_register_address', '5');

Я только что столкнулся с этой проблемой после перехода с 1.9 на 2.4.3.

Мое решение заключалось в том, чтобы создать резервную копию таблицы customer_form_attribute и усечь ее (удалить все данные).

      mysql> create table customer_form_attribute_bkup select * from customer_form_attribute;
mysql> truncate customer_form_attribute;

Затем я поместил следующий код, который я поднял / изменил из vendor / magento / module-customer / Setup / Patch / Data / DefaultCustomerGroupsAndAttributes.php, в файл в корневом каталоге моей установки Magento 2 и запустил его.

Таблица customer_form_attribute была перестроена и после этого все заработало.

      <?php
 
require __DIR__ . '/app/bootstrap.php';
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
$app = $bootstrap->createApplication(\Magento\Framework\App\Http::class);


$objManager = \Magento\Framework\App\ObjectManager::getInstance();
$logger = $objManager->get(\Psr\Log\LoggerInterface::class);

$moduleDataSetup = $objManager->get('Magento\Framework\Setup\ModuleDataSetupInterface');
$customerSetupFactory = $objManager->get('Magento\Customer\Setup\CustomerSetupFactory');
$customerSetup = $customerSetupFactory->create(['setup' => $moduleDataSetup]);
$customerSetup->installCustomerForms();
Другие вопросы по тегам