Skip to content

Commit c5579ce

Browse files
committed
Merge branch '1.2' into 1.x
2 parents 8fb4056 + 1c256a9 commit c5579ce

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

src/SearchIndexAdapter/OpenSearch/DataObject/FieldDefinitionAdapter/FieldCollectionAdapter.php

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
use Pimcore\Bundle\GenericDataIndexBundle\Enum\SearchIndex\OpenSearch\AttributeType;
2222
use Pimcore\Bundle\StaticResolverBundle\Models\DataObject\FieldCollection\DefinitionResolverInterface;
2323
use Pimcore\Model\DataObject\ClassDefinition\Data\Fieldcollections;
24+
use Pimcore\Model\DataObject\Fieldcollection;
2425
use Symfony\Contracts\Service\Attribute\Required;
2526

2627
/**
@@ -68,6 +69,38 @@ public function getIndexMapping(): array
6869
];
6970
}
7071

72+
public function normalize(mixed $value): ?array
73+
{
74+
if (!$value instanceof Fieldcollection) {
75+
return null;
76+
}
77+
78+
$resultItems = [];
79+
$items = $value->getItems();
80+
81+
foreach ($items as $item) {
82+
$type = $item->getType();
83+
$fieldCollectionDefinition = $this->fieldCollectionDefinition->getByKey($item->getType());
84+
if (!$fieldCollectionDefinition) {
85+
continue;
86+
}
87+
$resultItem = ['type' => $type];
88+
89+
foreach ($fieldCollectionDefinition->getFieldDefinitions() as $fieldDefinition) {
90+
$getter = 'get' . ucfirst($fieldDefinition->getName());
91+
$value = $item->$getter();
92+
$resultItem[$fieldDefinition->getName()] = $this->fieldDefinitionService->normalizeValue(
93+
$fieldDefinition,
94+
$value
95+
);
96+
}
97+
98+
$resultItems[] = $resultItem;
99+
}
100+
101+
return $resultItems;
102+
}
103+
71104
#[Required]
72105
public function setFieldCollectionDefinition(DefinitionResolverInterface $definitionResolver): void
73106
{

0 commit comments

Comments
 (0)