Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
RowCustomizer.php
Go to the documentation of this file.
1 <?php
7 
13 
15 {
19  const CONFIGURABLE_VARIATIONS_COLUMN = 'configurable_variations';
20 
24  const CONFIGURABLE_VARIATIONS_LABELS_COLUMN = 'configurable_variation_labels';
25 
29  protected $configurableData = [];
30 
34  private $configurableColumns = [
37  ];
38 
47  {
49  $productCollection->addAttributeToFilter('entity_id', ['in' => $productIds])
50  ->addAttributeToFilter('type_id', ['eq' => ConfigurableProductType::TYPE_CODE]);
51 
52  while ($product = $productCollection->fetchItem()) {
53  $productAttributesOptions = $product->getTypeInstance()->getConfigurableOptions($product);
54  $this->configurableData[$product->getId()] = [];
55  $variations = [];
56  $variationsLabels = [];
57 
58  foreach ($productAttributesOptions as $productAttributeOption) {
59  foreach ($productAttributeOption as $optValues) {
60  $variations[$optValues['sku']][] = $optValues['attribute_code'] . '=' . $optValues['option_title'];
61 
62  if (!empty($optValues['super_attribute_label'])) {
63  $variationsLabels[$optValues['attribute_code']] = $optValues['attribute_code'] . '='
64  . $optValues['super_attribute_label'];
65  }
66  }
67  }
68 
69  foreach ($variations as $sku => $values) {
70  $variations[$sku] = 'sku=' . $sku . Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR
72  }
73 
74  $this->configurableData[$product->getId()] = [
75  self::CONFIGURABLE_VARIATIONS_COLUMN => implode(
76  ImportProduct::PSEUDO_MULTI_LINE_SEPARATOR,
77  $variations
78  ),
79  self::CONFIGURABLE_VARIATIONS_LABELS_COLUMN => implode(
81  $variationsLabels
82  )
83  ];
84  }
85  }
86 
93  public function addHeaderColumns($columns)
94  {
95  return array_merge($columns, $this->configurableColumns);
96  }
97 
105  public function addData($dataRow, $productId)
106  {
107  if (!empty($this->configurableData[$productId])) {
108  $dataRow = array_merge($dataRow, $this->configurableData[$productId]);
109  }
110  return $dataRow;
111  }
112 
120  public function getAdditionalRowsCount($additionalRowsCount, $productId)
121  {
122  if (!empty($this->configurableData[$productId])) {
123  $additionalRowsCount = max($additionalRowsCount, count($this->configurableData[$productId]));
124  }
125  return $additionalRowsCount;
126  }
127 }
$values
Definition: options.phtml:88
$columns
Definition: default.phtml:15