/** * Converts a flat field to a structured one * * @param string $column * @param string $value * * @throws \LogicException * * @return array */ public function convert($column, $value) { $associationFields = $this->assocFieldResolver->resolveAssociationColumns(); if (in_array($column, $associationFields)) { $value = $this->fieldSplitter->splitCollection($value); list($associationTypeCode, $associatedWith) = $this->fieldSplitter->splitFieldName($column); return ['associations' => [$associationTypeCode => [$associatedWith => $value]]]; } elseif (in_array($column, ['categories'])) { return [$column => $this->fieldSplitter->splitCollection($value)]; } elseif (in_array($column, ['groups'])) { return $this->extractVariantGroup($value); } elseif ('enabled' === $column) { return [$column => (bool) $value]; } elseif ('family' === $column) { return [$column => $value]; } throw new \LogicException(sprintf('No converters found for attribute type "%s"', $column)); }
/** * @param string $column * * @return string */ protected function getColumnCode($column) { $splitedColumn = $this->fieldSplitter->splitFieldName($column); return is_array($splitedColumn) ? $splitedColumn[0] : $column; }