diff --git a/src/DataObject/Data/Adapter/FieldCollectionsAdapter.php b/src/DataObject/Data/Adapter/FieldCollectionsAdapter.php index 7791d172..5a8e625d 100644 --- a/src/DataObject/Data/Adapter/FieldCollectionsAdapter.php +++ b/src/DataObject/Data/Adapter/FieldCollectionsAdapter.php @@ -40,6 +40,8 @@ final readonly class FieldCollectionsAdapter implements SetterDataInterface, DataNormalizerInterface { use ValidateFieldTypeTrait; + private const TYPE_KEY = 'type'; + private const DATA_KEY = 'data'; public function __construct( private DataAdapterServiceInterface $dataAdapterService, @@ -72,7 +74,7 @@ public function getDataForSetter( $collection = $this->createCollection( $element, $fieldDefinition, - $collectionRaw['type'], + $collectionRaw[self::TYPE_KEY], $collectionData, $count ); @@ -100,15 +102,13 @@ public function normalize( if (!$fieldCollectionDefinition) { continue; } - $resultItem = ['type' => $type]; + $resultItem = [self::TYPE_KEY => $type, self::DATA_KEY => []]; foreach ($fieldCollectionDefinition->getFieldDefinitions() as $collectionFieldDefinition) { $getter = 'get' . ucfirst($collectionFieldDefinition->getName()); $value = $item->$getter(); - $resultItem[$collectionFieldDefinition->getName()] = $this->dataService->getNormalizedValue( - $value, - $collectionFieldDefinition, - ); + $resultItem[self::DATA_KEY][$collectionFieldDefinition->getName()] = + $this->dataService->getNormalizedValue($value, $collectionFieldDefinition); } $resultItems[] = $resultItem; diff --git a/src/DataObject/Data/Adapter/RgbaColorAdapter.php b/src/DataObject/Data/Adapter/RgbaColorAdapter.php index 6949e906..f5ff8065 100644 --- a/src/DataObject/Data/Adapter/RgbaColorAdapter.php +++ b/src/DataObject/Data/Adapter/RgbaColorAdapter.php @@ -16,6 +16,7 @@ namespace Pimcore\Bundle\StudioBackendBundle\DataObject\Data\Adapter; +use Pimcore\Bundle\StudioBackendBundle\DataObject\Data\DataNormalizerInterface; use Pimcore\Bundle\StudioBackendBundle\DataObject\Data\Model\FieldContextData; use Pimcore\Bundle\StudioBackendBundle\DataObject\Data\SetterDataInterface; use Pimcore\Bundle\StudioBackendBundle\DataObject\Service\DataAdapterLoaderInterface; @@ -28,7 +29,7 @@ * @internal */ #[AutoconfigureTag(DataAdapterLoaderInterface::ADAPTER_TAG)] -final readonly class RgbaColorAdapter implements SetterDataInterface +final readonly class RgbaColorAdapter implements SetterDataInterface, DataNormalizerInterface { public function getDataForSetter( Concrete $element, @@ -43,4 +44,16 @@ public function getDataForSetter( return new RgbaColor($r, $g, $b, $a); } + + public function normalize( + mixed $value, + Data $fieldDefinition + ): ?string + { + if (!$value instanceof RgbaColor) { + return null; + } + + return $value->getHex(true); + } }