formFactory = $formFactory; $this->customerFactory = $customerFactory; $this->storeManager = $storeManager; $this->customerGroupManagement = $customerGroupManagement; $this->dataObjectHelper = $dataObjectHelper; } /** * @param string $formCode * @param RequestInterface $request * @param array $attributeValues * @return CustomerInterface */ public function extract( $formCode, RequestInterface $request, array $attributeValues = [] ) { $customerForm = $this->formFactory->create( CustomerMetadataInterface::ENTITY_TYPE_CUSTOMER, $formCode, $attributeValues ); $customerData = $customerForm->extractData($request); $customerData = $customerForm->compactData($customerData); $allowedAttributes = $customerForm->getAllowedAttributes(); $isGroupIdEmpty = isset($allowedAttributes['group_id']); $customerDataObject = $this->customerFactory->create(); $this->dataObjectHelper->populateWithArray( $customerDataObject, $customerData, \Magento\Customer\Api\Data\CustomerInterface::class ); $store = $this->storeManager->getStore(); if ($isGroupIdEmpty) { $customerDataObject->setGroupId( $this->customerGroupManagement->getDefaultGroup($store->getId())->getId() ); } $customerDataObject->setWebsiteId($store->getWebsiteId()); $customerDataObject->setStoreId($store->getId()); return $customerDataObject; } }