AttributeResolver.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Customer\Model\Metadata;
  7. use Magento\Customer\Model\Attribute;
  8. use Magento\Customer\Model\AttributeMetadataDataProvider;
  9. use Magento\Customer\Api\Data\AttributeMetadataInterface;
  10. use Magento\Framework\Exception\NoSuchEntityException;
  11. class AttributeResolver
  12. {
  13. /**
  14. * @var AttributeMetadataDataProvider
  15. */
  16. protected $attributeMetadataDataProvider;
  17. /**
  18. * @param AttributeMetadataDataProvider $attributeMetadataDataProvider
  19. */
  20. public function __construct(
  21. AttributeMetadataDataProvider $attributeMetadataDataProvider
  22. ) {
  23. $this->attributeMetadataDataProvider = $attributeMetadataDataProvider;
  24. }
  25. /**
  26. * Get attribute model by attribute data object
  27. *
  28. * @param string $entityType
  29. * @param AttributeMetadataInterface $attribute
  30. * @return Attribute
  31. * @throws NoSuchEntityException
  32. */
  33. public function getModelByAttribute($entityType, AttributeMetadataInterface $attribute)
  34. {
  35. /** @var Attribute $model */
  36. $model = $this->attributeMetadataDataProvider->getAttribute(
  37. $entityType,
  38. $attribute->getAttributeCode()
  39. );
  40. if ($model) {
  41. return $model;
  42. } else {
  43. throw new NoSuchEntityException(
  44. __(
  45. 'No such entity with %fieldName = %fieldValue, %field2Name = %field2Value',
  46. [
  47. 'fieldName' => 'entityType',
  48. 'fieldValue' => $entityType,
  49. 'field2Name' => 'attributeCode',
  50. 'field2Value' => $attribute->getAttributeCode()
  51. ]
  52. )
  53. );
  54. }
  55. }
  56. }