Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
SwatchAttributeType.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
8 namespace Magento\Swatches\Model;
9 
12 
17 {
21  private $serializer;
22 
28  private $eavAttributeAdditionalDataKeys = [
30  'update_product_preview_image',
31  'use_product_image_for_swatch',
32  ];
33 
37  public function __construct(Json $serializer)
38  {
39  $this->serializer = $serializer;
40  }
41 
48  public function isTextSwatch(AttributeInterface $productAttribute): bool
49  {
50  $this->populateAdditionalDataEavAttribute($productAttribute);
51 
52  return $productAttribute->getData(Swatch::SWATCH_INPUT_TYPE_KEY) === Swatch::SWATCH_INPUT_TYPE_TEXT;
53  }
54 
61  public function isVisualSwatch(AttributeInterface $productAttribute): bool
62  {
63  $this->populateAdditionalDataEavAttribute($productAttribute);
64 
65  return $productAttribute->getData(Swatch::SWATCH_INPUT_TYPE_KEY) === Swatch::SWATCH_INPUT_TYPE_VISUAL;
66  }
67 
74  public function isSwatchAttribute(AttributeInterface $productAttribute): bool
75  {
76  return $this->isTextSwatch($productAttribute) || $this->isVisualSwatch($productAttribute);
77  }
78 
85  private function populateAdditionalDataEavAttribute(AttributeInterface $attribute): void
86  {
88  $serializedAdditionalData = $attribute->getData('additional_data');
89  if ($serializedAdditionalData) {
90  $additionalData = $this->serializer->unserialize($serializedAdditionalData);
91  if ($additionalData !== null && is_array($additionalData)) {
92  foreach ($this->eavAttributeAdditionalDataKeys as $key) {
93  if (isset($additionalData[$key])) {
94  $attribute->setData($key, $additionalData[$key]);
95  }
96  }
97  }
98  }
99  }
100  }
101 }
isTextSwatch(AttributeInterface $productAttribute)
isSwatchAttribute(AttributeInterface $productAttribute)
isVisualSwatch(AttributeInterface $productAttribute)