Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use MagentoCustomerModelCustomer;
- use MagentoEavModelConfig;
- use MagentoEavModelEntityAttributeSetFactory as AttributeSetFactory;
- use MagentoEavSetupEavSetupFactory;
- use MagentoFrameworkSetupInstallDataInterface;
- use MagentoFrameworkSetupModuleContextInterface;
- use MagentoFrameworkSetupModuleDataSetupInterface;
- /**
- * Class InstallData
- */
- class InstallData implements InstallDataInterface
- {
- /**
- * @var EavSetupFactory
- */
- protected $eavSetupFactory;
- /**
- * @var Config
- */
- protected $eavConfig;
- /**
- * @var AttributeSetFactory
- */
- protected $attributeSetFactory;
- /**
- * InstallData constructor.
- *
- * @param EavSetupFactory $eavSetupFactory
- * @param Config $eavConfig
- * @param AttributeSetFactory $attributeSetFactory
- */
- public function __construct(
- EavSetupFactory $eavSetupFactory,
- Config $eavConfig,
- AttributeSetFactory $attributeSetFactory
- ) {
- $this->eavSetupFactory = $eavSetupFactory;
- $this->eavConfig = $eavConfig;
- $this->attributeSetFactory = $attributeSetFactory;
- }
- /**
- * Install Data
- *
- * @param ModuleDataSetupInterface $setup
- * @param ModuleContextInterface $context
- * @throws Exception
- */
- public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
- {
- $setup->startSetup();
- $this->addCustomerAttributes($setup);
- $setup->endSetup();
- }
- /**
- * Add Customer Attributes
- *
- * @param $setup
- */
- private function addCustomerAttributes(ModuleDataSetupInterface $setup)
- {
- $customerAttributes = [
- 'sample_attribute' => [
- 'properties' => [
- 'type' => 'varchar',
- 'label' => 'Sample Attribute',
- 'input' => 'text',
- 'required' => false,
- 'sort_order' => 100,
- 'system' => false,
- 'position' => 1000,
- ],
- 'used_in_forms' => [
- 'adminhtml_customer',
- 'adminhtml_checkout',
- 'customer_account_create',
- 'customer_account_edit',
- 'checkout_register',
- ]
- ],
- ];
- /** @var MagentoEavSetupEavSetup $eavSetup */
- $eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);
- $customerEntity = $this->eavConfig->getEntityType(Customer::ENTITY);
- $attributeSetId = $customerEntity->getDefaultAttributeSetId();
- /** @var MagentoEavModelEntityAttributeSet $attributeSet */
- $attributeSet = $this->attributeSetFactory->create();
- $attributeSetGroupId = $attributeSet->getDefaultGroupId($attributeSetId);
- foreach ($customerAttributes as $attributeCode => $attributeData) {
- // Create Attribute
- $eavSetup->addAttribute(Customer::ENTITY, $attributeCode, $attributeData['properties']);
- // Add Attribute to Set, Group, and Forms
- $attribute = $this->eavConfig->getAttribute(Customer::ENTITY, $attributeCode);
- $attribute->addData([
- 'attribute_set_id' => $attributeSetId,
- 'attribute_group_id' => $attributeSetGroupId,
- 'used_in_forms' => $attributeData['used_in_forms']
- ]);
- $attribute->save();
- }
- }
- }
Add Comment
Please, Sign In to add comment