Як програмно додати атрибути клієнтів у Magento 2?

Надання високоякісного обслуговування клієнтів є одним із стовпів успішного бізнесу. Magento 2 пропонує вам широкий спектр функцій для управління обліковими записами клієнтів одразу після встановлення. Таким чином, ви можете налаштувати ім'я клієнта, адресу, логін, параметри пароля тощо.

Однак, стандартних параметрів не завжди достатньо, якщо вам потрібно зібрати певну інформацію. Тим не менш, вам потрібно буде створити власні атрибути клієнтів.

На жаль, Magento 2 не пропонує простого налаштування цієї функції в адміністративній панелі. Тому вам потрібно додавати атрибути клієнтів програмно.

Не знаєте як? Не хвилюйся, ти ось-ось дізнаєшся!

1. Створіть модуль Magento 2

Magento обробляє атрибути клієнтів за допомогою Структура моделі EAV і Патчі даних змінити інформацію. Отже, саме це ми й застосуємо сьогодні.

Отже, перш ніж додавати атрибути клієнта, вам потрібно створити Basic модуль Magento . Якщо у вас вже є відповідний атрибут, ви можете просто його використати.

Для наведеного нижче методу потрібен модуль для запуску коду. Тож переконайтеся, що він у вас є.

2. Створіть файл InstallData.php

Наступний крок — створити Файл InstallData.php в ваш-модуль/Налаштування і додайте наступний код:

<?php

namespace vendor\your-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
{
	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]);
		$eavSetup->addAttribute(
			\Magento\Customer\Model\Customer::ENTITY,
			'custom_attribute',
			[
				'type'         => 'varchar',
				'label'        => 'Custom Attribute',
				'input'        => 'text',
				'required'     => false,
				'visible'      => true,
				'user_defined' => true,
				'position'     => 999,
				'system'       => 0,
			]
		);
		$customAttribute = $this->eavConfig->getAttribute(Customer::ENTITY, 'custom_attribute');

		// more used_in_forms ['adminhtml_checkout','adminhtml_customer','adminhtml_customer_address','customer_account_edit','customer_address_edit','customer_register_address']
		$customAttribute->setData(
			'used_in_forms',
			['adminhtml_customer']

		);
		$customAttribute->save();
	}
}

У цьому коді ви створюєте Модель налаштування EAV і визначити метод install() та об'єкт eavConfigЗалежно від типу атрибута, який ви хочете додати, вам доведеться налаштувати код і встановити відповідну назву атрибута, тип даних, тип вводу тощо.

3. Додайте атрибут клієнта

Після додавання всього необхідного вмісту до файлу InstallData.php залишилося лише кілька завершальних штрихів. Виконайте такі команди для встановлення модуля:

php bin/magento setup:upgrade
php bin/magento setup:static-content:deploy

Примітка: Якщо ви не хочете, щоб ваш вебсайт був недоступний під час розгортання, спробуйте ці команди розгортання з нульовим часом простою для Magento 2 .

Тепер ви нарешті можете перейти до Клієнти розділ в адміністративній панелі та перевірте щойно створений атрибут для кожного клієнта.

Додати атрибут клієнта програмно в Magento 2

Ось усі кроки для програмного додавання атрибутів клієнтів у Magento 2. Це завдання не таке вже й складне, якщо застосувати правильний метод. Тому переконайтеся, що ви ретельно виконуєте всі кроки та додаєте точні дані.

Окрім атрибутів клієнта, ви також можете додавання користувацьких полів до оформлення замовлення в Magento 2 . Таким чином, ви матимете всі необхідні дані для безперебійного відправлення та доставки.