/** * 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; }