From 1d53fe8ee3ceb72f082de94c3eea5fc8b09d2f23 Mon Sep 17 00:00:00 2001 From: HypeMC Date: Sun, 1 Oct 2023 21:57:11 +0200 Subject: [PATCH] [DoctrineBridge] Pass `Request` to `EntityValueResolver`'s expression --- .../Bridge/Doctrine/ArgumentResolver/EntityValueResolver.php | 5 ++++- src/Symfony/Bridge/Doctrine/CHANGELOG.md | 1 + .../Tests/ArgumentResolver/EntityValueResolverTest.php | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Bridge/Doctrine/ArgumentResolver/EntityValueResolver.php b/src/Symfony/Bridge/Doctrine/ArgumentResolver/EntityValueResolver.php index b531857c1422c..bdf975b32befd 100644 --- a/src/Symfony/Bridge/Doctrine/ArgumentResolver/EntityValueResolver.php +++ b/src/Symfony/Bridge/Doctrine/ArgumentResolver/EntityValueResolver.php @@ -199,7 +199,10 @@ private function findViaExpression(ObjectManager $manager, Request $request, Map } $repository = $manager->getRepository($options->class); - $variables = array_merge($request->attributes->all(), ['repository' => $repository]); + $variables = array_merge($request->attributes->all(), [ + 'repository' => $repository, + 'request' => $request, + ]); try { return $this->expressionLanguage->evaluate($options->expr, $variables); diff --git a/src/Symfony/Bridge/Doctrine/CHANGELOG.md b/src/Symfony/Bridge/Doctrine/CHANGELOG.md index 02e3f3fd4c9a3..6bb1f39a67bb3 100644 --- a/src/Symfony/Bridge/Doctrine/CHANGELOG.md +++ b/src/Symfony/Bridge/Doctrine/CHANGELOG.md @@ -8,6 +8,7 @@ CHANGELOG * Deprecate not constructing `DoctrineDataCollector` with an instance of `DebugDataHolder` * Deprecate `DoctrineDataCollector::addLogger()`, use a `DebugDataHolder` instead * Deprecate `ContainerAwareLoader`, use dependency injection in your fixtures instead + * Always pass the `Request` object to `EntityValueResolver`'s expression 6.3 --- diff --git a/src/Symfony/Bridge/Doctrine/Tests/ArgumentResolver/EntityValueResolverTest.php b/src/Symfony/Bridge/Doctrine/Tests/ArgumentResolver/EntityValueResolverTest.php index 883af01280532..f45c8b6d27f66 100644 --- a/src/Symfony/Bridge/Doctrine/Tests/ArgumentResolver/EntityValueResolverTest.php +++ b/src/Symfony/Bridge/Doctrine/Tests/ArgumentResolver/EntityValueResolverTest.php @@ -334,6 +334,7 @@ public function testExpressionMapsToArgument() ->method('evaluate') ->with('repository.findOneByCustomMethod(id)', [ 'repository' => $repository, + 'request' => $request, 'id' => 5, ]) ->willReturn($object = new \stdClass());