/** * @param array $data * @return Struct\Property\Set */ private function hydrateSet(array $data) { $set = new Struct\Property\Set(); $translation = $this->getTranslation($data, '__propertySet_translation', '__propertySet_translation_fallback', ['groupName' => '__propertySet_name']); $data = array_merge($data, $translation); $set->setId((int) $data['__propertySet_id']); $set->setName($data['__propertySet_name']); $set->setComparable((bool) $data['__propertySet_comparable']); if ($data['__propertySetAttribute_id']) { $attribute = $this->extractFields('__propertySetAttribute_', $data); $set->addAttribute('core', $this->attributeHydrator->hydrate($attribute)); } return $set; }
/** * Example: * * return [ * 9 => [ * 'id' => 9, * 'optionID' => 9, * 'name' => 'Farbe', * 'groupID' => 1, * 'groupName' => 'Edelbrände', * 'value' => 'goldig', * 'values' => [ * 53 => 'goldig', * ], * ], * 2 => [ * 'id' => 2, * 'optionID' => 2, * 'name' => 'Flaschengröße', * 'groupID' => 1, * 'groupName' => 'Edelbrände', * 'value' => '0,5 Liter, 0,7 Liter, 1,0 Liter', * 'values' => [ * 23 => '0,5 Liter', * 24 => '0,7 Liter', * 25 => '1,0 Liter', * ], * ], * ]; * * @param StoreFrontBundle\Struct\Property\Set $set * @return array */ public function convertPropertySetStruct(StoreFrontBundle\Struct\Property\Set $set) { $result = []; foreach ($set->getGroups() as $group) { $values = array_map(function (StoreFrontBundle\Struct\Property\Option $option) { return $option->getName(); }, $group->getOptions()); $mediaValues = array(); foreach ($group->getOptions() as $option) { /**@var $option StoreFrontBundle\Struct\Property\Option */ if ($option->getMedia()) { $mediaValues[$option->getId()] = array_merge(array('valueId' => $option->getId()), $this->convertMediaStruct($option->getMedia())); } } $result[$group->getId()] = ['id' => $group->getId(), 'optionID' => $group->getId(), 'name' => $group->getName(), 'groupID' => $set->getId(), 'groupName' => $set->getName(), 'value' => implode(', ', $values), 'values' => $values, 'media' => $mediaValues]; } return $result; }