Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Controller\ValueResolverInterface;
use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;
use Symfony\Component\HttpKernel\Exception\NearMissValueResolverException;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

/**
Expand Down Expand Up @@ -68,7 +69,11 @@ public function resolve(Request $request, ArgumentMetadata $argument): array
} elseif (false === $object = $this->find($manager, $request, $options, $argument)) {
// find by criteria
if (!$criteria = $this->getCriteria($request, $options, $manager, $argument)) {
return [];
if (!class_exists(NearMissValueResolverException::class)) {
return [];
}

throw new NearMissValueResolverException(sprintf('Cannot find mapping for "%s": declare one using either the #[MapEntity] attribute or mapped route parameters.', $options->class));
}
try {
$object = $manager->getRepository($options->class)->findOneBy($criteria);
Expand Down Expand Up @@ -185,7 +190,7 @@ private function getCriteria(Request $request, MapEntity $options, ObjectManager

return $criteria;
} elseif (null === $mapping) {
trigger_deprecation('symfony/doctrine-bridge', '7.1', 'Relying on auto-mapping for Doctrine entities is deprecated for argument $%s of "%s": declare the identifier using either the #[MapEntity] attribute or mapped route parameters.', $argument->getName(), method_exists($argument, 'getControllerName') ? $argument->getControllerName() : 'n/a');
trigger_deprecation('symfony/doctrine-bridge', '7.1', 'Relying on auto-mapping for Doctrine entities is deprecated for argument $%s of "%s": declare the mapping using either the #[MapEntity] attribute or mapped route parameters.', $argument->getName(), method_exists($argument, 'getControllerName') ? $argument->getControllerName() : 'n/a');
$mapping = $request->attributes->keys();
}

Expand Down
1 change: 1 addition & 0 deletions src/Symfony/Bridge/Doctrine/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ CHANGELOG
* Reset the manager registry using native lazy objects when applicable
* Deprecate the `DoctrineExtractor::getTypes()` method, use `DoctrineExtractor::getType()` instead
* Add support for `Symfony\Component\Clock\DatePoint` as `DatePointType` Doctrine type
* Improve exception message when `EntityValueResolver` gets no mapping information

7.2
---
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
use Symfony\Component\ExpressionLanguage\SyntaxError;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;
use Symfony\Component\HttpKernel\Exception\NearMissValueResolverException;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

class EntityValueResolverTest extends TestCase
Expand Down Expand Up @@ -75,6 +76,11 @@ public function testResolveWithNoIdAndDataOptional()
$request = new Request();
$argument = $this->createArgument(null, new MapEntity(), 'arg', true);

if (class_exists(NearMissValueResolverException::class)) {
$this->expectException(NearMissValueResolverException::class);
$this->expectExceptionMessage('Cannot find mapping for "stdClass": declare one using either the #[MapEntity] attribute or mapped route parameters.');
}

$this->assertSame([], $resolver->resolve($request, $argument));
}

Expand All @@ -94,6 +100,11 @@ public function testResolveWithStripNulls()
$manager->expects($this->never())
->method('getRepository');

if (class_exists(NearMissValueResolverException::class)) {
$this->expectException(NearMissValueResolverException::class);
$this->expectExceptionMessage('Cannot find mapping for "stdClass": declare one using either the #[MapEntity] attribute or mapped route parameters.');
}

$this->assertSame([], $resolver->resolve($request, $argument));
}

Expand Down Expand Up @@ -262,6 +273,11 @@ public function testResolveGuessOptional()

$manager->expects($this->never())->method('getRepository');

if (class_exists(NearMissValueResolverException::class)) {
$this->expectException(NearMissValueResolverException::class);
$this->expectExceptionMessage('Cannot find mapping for "stdClass": declare one using either the #[MapEntity] attribute or mapped route parameters.');
}

$this->assertSame([], $resolver->resolve($request, $argument));
}

Expand Down
Loading