Skip to content

Commit b0a9609

Browse files
authored
fix passing route object parameter to generator (#254)
* fix passing route object parameter to generator
1 parent ab47aab commit b0a9609

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

src/ProviderBasedGenerator.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ public function generate($name, $parameters = [], $referenceType = self::ABSOLUT
6565
&& $parameters[RouteObjectInterface::ROUTE_OBJECT] instanceof SymfonyRoute
6666
) {
6767
$route = $parameters[RouteObjectInterface::ROUTE_OBJECT];
68+
unset($parameters[RouteObjectInterface::ROUTE_OBJECT]);
6869
} elseif (null === $route = $this->provider->getRouteByName($name)) {
6970
throw new RouteNotFoundException(sprintf('Route "%s" does not exist.', $name));
7071
}

tests/Unit/Routing/ProviderBasedGeneratorTest.php

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
use Symfony\Component\Routing\Exception\RouteNotFoundException;
2222
use Symfony\Component\Routing\RequestContext;
2323
use Symfony\Component\Routing\Route;
24+
use Symfony\Component\Routing\Route as SymfonyRoute;
2425

2526
class ProviderBasedGeneratorTest extends TestCase
2627
{
@@ -106,6 +107,15 @@ public function testGenerateFromRoute(): void
106107
$this->assertEquals('result_url', $url);
107108
}
108109

110+
public function testRemoveRouteObject(): void
111+
{
112+
$url = $this->generator->generate(RouteObjectInterface::OBJECT_BASED_ROUTE_NAME, [
113+
RouteObjectInterface::ROUTE_OBJECT => new Proxy('/path'),
114+
]);
115+
116+
$this->assertEquals('result_url', $url);
117+
}
118+
109119
/**
110120
* @group legacy
111121
*
@@ -172,7 +182,12 @@ class TestableProviderBasedGenerator extends ProviderBasedGenerator
172182
{
173183
protected function doGenerate($variables, $defaults, $requirements, $tokens, $parameters, $name, $referenceType, $hostTokens, array $requiredSchemes = [])
174184
{
175-
return 'result_url';
185+
$url = 'result_url';
186+
if ($parameters && $query = http_build_query($parameters, '', '&', PHP_QUERY_RFC3986)) {
187+
$url .= '?'.$query;
188+
}
189+
190+
return $url;
176191
}
177192
}
178193

@@ -188,3 +203,8 @@ public function getContent(): ?object
188203
return null;
189204
}
190205
}
206+
207+
class Proxy extends SymfonyRoute
208+
{
209+
public $__isInitialized__ = true;
210+
}

0 commit comments

Comments
 (0)