Skip to content

Commit c4fd527

Browse files
committed
fix(iri): properly handle read link parameters when generating iris
1 parent 70611b3 commit c4fd527

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

src/Symfony/Routing/IriConverter.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,15 @@ private function generateSymfonyRoute(object|string $resource, int $referenceTyp
183183
{
184184
$identifiers = $context['uri_variables'] ?? [];
185185

186+
foreach ($identifiers as $identifier) {
187+
if (is_object($identifier)) {
188+
$identifiers = [
189+
...$identifiers,
190+
...$this->identifiersExtractor->getIdentifiersFromItem($identifier, $identifiersExtractorOperation, $context),
191+
];
192+
}
193+
}
194+
186195
if (\is_object($resource)) {
187196
try {
188197
$identifiers = $this->identifiersExtractor->getIdentifiersFromItem($resource, $identifiersExtractorOperation, $context);

tests/Functional/Parameters/LinkProviderParameterTest.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,4 +183,24 @@ public function testUriVariableHasDummy(): void
183183
'dummy' => '/dummies/1',
184184
]);
185185
}
186+
187+
public function testCollectionIdIsCorrect(): void
188+
{
189+
$container = static::getContainer();
190+
if ('mongodb' === $container->getParameter('kernel.environment')) {
191+
$this->markTestSkipped();
192+
}
193+
194+
$manager = $this->getManager();
195+
$dummy = new Dummy();
196+
$dummy->setName('hi');
197+
$manager->persist($dummy);
198+
$manager->flush();
199+
200+
self::createClient()->request('GET', '/link_parameter_provider_resources/'.$dummy->getId());
201+
202+
$this->assertJsonContains([
203+
'@id' => '/link_parameter_provider_resources/1',
204+
]);
205+
}
186206
}

0 commit comments

Comments
 (0)