/
AttributeMetadataDataProvider.php
99 lines (89 loc) · 2.9 KB
/
AttributeMetadataDataProvider.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<?php
/**
* Copyright © 2016 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Customer\Model;
use Magento\Eav\Model\Entity\Attribute\AbstractAttribute;
/**
* Attribute Metadata data provider class
*/
class AttributeMetadataDataProvider
{
/**
* @var \Magento\Eav\Model\Config
*/
private $eavConfig;
/**
* @var \Magento\Customer\Model\ResourceModel\Form\Attribute\CollectionFactory
*/
private $attrFormCollectionFactory;
/**
* @var \Magento\Store\Model\StoreManager
*/
private $storeManager;
/**
* Initialize data provider with data source
*
* @param \Magento\Eav\Model\Config $eavConfig
* @param \Magento\Customer\Model\ResourceModel\Form\Attribute\CollectionFactory $attrFormCollectionFactory
* @param \Magento\Store\Model\StoreManager $storeManager
*/
public function __construct(
\Magento\Eav\Model\Config $eavConfig,
\Magento\Customer\Model\ResourceModel\Form\Attribute\CollectionFactory $attrFormCollectionFactory,
\Magento\Store\Model\StoreManager $storeManager
) {
$this->eavConfig = $eavConfig;
$this->attrFormCollectionFactory = $attrFormCollectionFactory;
$this->storeManager = $storeManager;
}
/**
* Get attribute model for a given entity type and code
*
* @param string $entityType
* @param string $attributeCode
* @return false|AbstractAttribute
*/
public function getAttribute($entityType, $attributeCode)
{
return $this->eavConfig->getAttribute($entityType, $attributeCode);
}
/**
* Get all attribute codes for a given entity type and attribute set
*
* @param string $entityType
* @param int $attributeSetId
* @param string|null $storeId
* @return array Attribute codes
*/
public function getAllAttributeCodes($entityType, $attributeSetId = 0, $storeId = null)
{
if (null === $storeId) {
$storeId = $this->storeManager->getStore()->getId();
}
$object = new \Magento\Framework\DataObject(
[
'store_id' => $storeId,
'attribute_set_id' => $attributeSetId,
]
);
return $this->eavConfig->getEntityAttributeCodes($entityType, $object);
}
/**
* Load collection with filters applied
*
* @param string $entityType
* @param string $formCode
* @return \Magento\Customer\Model\ResourceModel\Form\Attribute\Collection
*/
public function loadAttributesCollection($entityType, $formCode)
{
$attributesFormCollection = $this->attrFormCollectionFactory->create();
$attributesFormCollection->setStore($this->storeManager->getStore())
->setEntityType($entityType)
->addFormCodeFilter($formCode)
->setSortOrder();
return $attributesFormCollection;
}
}