Skip to content

Commit 0f342bd

Browse files
committed
Allow to pass a single value for the groups opt
1 parent a66f5a6 commit 0f342bd

File tree

4 files changed

+19
-12
lines changed

4 files changed

+19
-12
lines changed

src/Bridge/NelmioApiDoc/Parser/ApiPlatformParser.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ private function getGroupsContext(ResourceMetadata $resourceMetadata, string $op
136136

137137
return [
138138
$groupsContext => [
139-
AbstractNormalizer::GROUPS => array_merge($itemOperationAttribute ?? [], $collectionOperationAttribute ?? []),
139+
AbstractNormalizer::GROUPS => array_merge((array) ($itemOperationAttribute ?? []), (array) ($collectionOperationAttribute ?? [])),
140140
],
141141
];
142142
}

src/Hydra/Serializer/DocumentationNormalizer.php

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -156,19 +156,23 @@ private function getPropertyNameCollectionFactoryContext(ResourceMetadata $resou
156156
$context = [];
157157

158158
if (isset($attributes['normalization_context'][AbstractNormalizer::GROUPS])) {
159-
$context['serializer_groups'] = $attributes['normalization_context'][AbstractNormalizer::GROUPS];
159+
$context['serializer_groups'] = (array) $attributes['normalization_context'][AbstractNormalizer::GROUPS];
160160
}
161161

162-
if (isset($attributes['denormalization_context'][AbstractNormalizer::GROUPS])) {
163-
if (isset($context['serializer_groups'])) {
164-
foreach ($attributes['denormalization_context'][AbstractNormalizer::GROUPS] as $groupName) {
165-
$context['serializer_groups'][] = $groupName;
166-
}
167-
} else {
168-
$context['serializer_groups'] = $attributes['denormalization_context'][AbstractNormalizer::GROUPS];
162+
if (!isset($attributes['denormalization_context'][AbstractNormalizer::GROUPS])) {
163+
return $context;
164+
}
165+
166+
if (isset($context['serializer_groups'])) {
167+
foreach ((array) $attributes['denormalization_context'][AbstractNormalizer::GROUPS] as $groupName) {
168+
$context['serializer_groups'][] = $groupName;
169169
}
170+
171+
return $context;
170172
}
171173

174+
$context['serializer_groups'] = (array) $attributes['denormalization_context'][AbstractNormalizer::GROUPS];
175+
172176
return $context;
173177
}
174178

src/Metadata/Property/Factory/SerializerPropertyMetadataFactory.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ private function transformLinkStatus(PropertyMetadata $propertyMetadata, array $
141141
private function getEffectiveSerializerGroups(array $options, string $resourceClass): array
142142
{
143143
if (isset($options['serializer_groups'])) {
144-
return [$options['serializer_groups'], $options['serializer_groups']];
144+
return [(array) $options['serializer_groups'], (array) $options['serializer_groups']];
145145
}
146146

147147
$resourceMetadata = $this->resourceMetadataFactory->create($resourceClass);
@@ -159,7 +159,10 @@ private function getEffectiveSerializerGroups(array $options, string $resourceCl
159159
$denormalizationContext = $resourceMetadata->getAttribute('denormalization_context');
160160
}
161161

162-
return [$normalizationContext['groups'] ?? null, $denormalizationContext['groups'] ?? null];
162+
return [
163+
isset($normalizationContext['groups']) ? (array) $normalizationContext['groups'] : null,
164+
isset($denormalizationContext['groups']) ? (array) $denormalizationContext['groups'] : null,
165+
];
163166
}
164167

165168
/**

tests/Fixtures/TestBundle/Entity/DummyCar.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
* @ApiResource(
2929
* itemOperations={"get"={"swagger_context"={"tags"={}}}, "put", "delete"},
3030
* attributes={
31-
* "normalization_context"={"groups"={"colors"}}
31+
* "normalization_context"={"groups"="colors"}
3232
* }
3333
* )
3434
* @ORM\Entity

0 commit comments

Comments
 (0)