Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
CustomerExtractor.php
Go to the documentation of this file.
1 <?php
7 namespace Magento\Customer\Model;
8 
13 
15 {
19  protected $formFactory;
20 
24  protected $customerFactory;
25 
29  protected $storeManager;
30 
35 
39  protected $dataObjectHelper;
40 
48  public function __construct(
49  \Magento\Customer\Model\Metadata\FormFactory $formFactory,
50  \Magento\Customer\Api\Data\CustomerInterfaceFactory $customerFactory,
53  \Magento\Framework\Api\DataObjectHelper $dataObjectHelper
54  ) {
55  $this->formFactory = $formFactory;
56  $this->customerFactory = $customerFactory;
57  $this->storeManager = $storeManager;
58  $this->customerGroupManagement = $customerGroupManagement;
59  $this->dataObjectHelper = $dataObjectHelper;
60  }
61 
68  public function extract(
69  $formCode,
71  array $attributeValues = []
72  ) {
73  $customerForm = $this->formFactory->create(
75  $formCode,
77  );
78 
79  $customerData = $customerForm->extractData($request);
80  $customerData = $customerForm->compactData($customerData);
81 
82  $allowedAttributes = $customerForm->getAllowedAttributes();
83  $isGroupIdEmpty = isset($allowedAttributes['group_id']);
84 
85  $customerDataObject = $this->customerFactory->create();
86  $this->dataObjectHelper->populateWithArray(
87  $customerDataObject,
89  \Magento\Customer\Api\Data\CustomerInterface::class
90  );
91  $store = $this->storeManager->getStore();
92  if ($isGroupIdEmpty) {
93  $customerDataObject->setGroupId(
94  $this->customerGroupManagement->getDefaultGroup($store->getId())->getId()
95  );
96  }
97 
98  $customerDataObject->setWebsiteId($store->getWebsiteId());
99  $customerDataObject->setStoreId($store->getId());
100 
101  return $customerDataObject;
102  }
103 }
$customerData
extract( $formCode, RequestInterface $request, array $attributeValues=[])
__construct(\Magento\Customer\Model\Metadata\FormFactory $formFactory, \Magento\Customer\Api\Data\CustomerInterfaceFactory $customerFactory, \Magento\Store\Model\StoreManagerInterface $storeManager, GroupManagementInterface $customerGroupManagement, \Magento\Framework\Api\DataObjectHelper $dataObjectHelper)