/** * @param Attribute $attribute * @param array $context * @return array * @throws InvalidItemException */ protected function normalizeAttribute(Attribute $attribute, array $context) { try { $processedItem = $this->attributeNormalizer->normalize($attribute, $context); } catch (NormalizeException $e) { throw new InvalidItemException($e->getMessage(), [$attribute]); } return $processedItem; }
/** * @param object $family * @param null $format * @param array $context * @return array|\Symfony\Component\Serializer\Normalizer\scalar * @throws Exception\NormalizeException */ public function normalize($family, $format = null, array $context = []) { /**@var Family $family * */ $normalizedFamily = ['code' => $family->getCode(), 'labels' => [], 'attribute_groups' => []]; foreach ($family->getTranslations() as $trans) { $normalizedFamily['labels'][$trans->getLocale()] = $trans->getLabel(); } $associations = $this->associationTypeRepository->findAll(); $normalizedFamily['associations'] = array(); foreach ($associations as $association) { $normalizedFamily['associations'][$association->getCode()] = array(); foreach ($association->getTranslations() as $assocTrans) { $normalizedFamily['associations'][$association->getCode()]['labels'][$assocTrans->getLocale()] = $assocTrans->getLabel(); } } foreach ($family->getAttributes() as $attr) { $normalizedFamily['attribute_groups'][$attr->getGroup()->getCode()]['code'] = $attr->getGroup()->getCode(); foreach ($attr->getGroup()->getTranslations() as $groupTrans) { $normalizedFamily['attribute_groups'][$attr->getGroup()->getCode()]['labels'][$groupTrans->getLocale()] = $groupTrans->getLabel(); } $normalizedFamily['attribute_groups'][$attr->getGroup()->getCode()]['attributes'][$attr->getCode()] = $this->attributeNormalizer->normalize($attr, null, $context); } return $normalizedFamily; }