|
33 | 33 | use InvalidArgumentException;
|
34 | 34 | use LogicException;
|
35 | 35 | use Symfony\Bridge\Doctrine\ArgumentResolver\EntityValueResolver;
|
| 36 | +use Symfony\Bridge\Doctrine\ArgumentResolver\EntityValueResolverExpressionModifiersInjectorInterface; |
36 | 37 | use Symfony\Bridge\Doctrine\ArgumentResolver\UserInjector;
|
37 | 38 | use Symfony\Bridge\Doctrine\Attribute\MapEntity;
|
38 | 39 | use Symfony\Bridge\Doctrine\DependencyInjection\AbstractDoctrineExtension;
|
|
51 | 52 | use Symfony\Component\Config\Definition\ConfigurationInterface;
|
52 | 53 | use Symfony\Component\Config\FileLocator;
|
53 | 54 | use Symfony\Component\DependencyInjection\Alias;
|
| 55 | +use Symfony\Component\DependencyInjection\Attribute\AutowireLocator; |
54 | 56 | use Symfony\Component\DependencyInjection\ChildDefinition;
|
55 | 57 | use Symfony\Component\DependencyInjection\ContainerBuilder;
|
56 | 58 | use Symfony\Component\DependencyInjection\Definition;
|
@@ -182,6 +184,7 @@ protected function dbalLoad(array $config, ContainerBuilder $container)
|
182 | 184 | $container->setAlias('doctrine.dbal.event_manager', new Alias(sprintf('doctrine.dbal.%s_connection.event_manager', $this->defaultConnection), false));
|
183 | 185 |
|
184 | 186 | $container->setParameter('doctrine.dbal.connection_factory.types', $config['types']);
|
| 187 | + $container->setParameter('doctrine.dbal.default_expression_modifier_injector', $config['default_expression_modifier_injector']); |
185 | 188 |
|
186 | 189 | $container->getDefinition('doctrine.dbal.connection_factory.dsn_parser')->setArgument(0, array_merge(ConnectionFactory::DEFAULT_SCHEME_MAP, $config['driver_schemes']));
|
187 | 190 |
|
@@ -497,7 +500,6 @@ protected function ormLoad(array $config, ContainerBuilder $container)
|
497 | 500 | // available in Symfony 6.2 and higher
|
498 | 501 | if (! class_exists(EntityValueResolver::class)) {
|
499 | 502 | $container->removeDefinition('doctrine.orm.entity_value_resolver');
|
500 |
| - $container->removeDefinition('doctrine.orm.entity_value_resolver.expression_language'); |
501 | 503 | } else {
|
502 | 504 | if (! class_exists(ExpressionLanguage::class)) {
|
503 | 505 | $container->removeDefinition('doctrine.orm.entity_value_resolver.expression_language');
|
@@ -539,7 +541,9 @@ protected function ormLoad(array $config, ContainerBuilder $container)
|
539 | 541 | }
|
540 | 542 |
|
541 | 543 | if (class_exists(ExpressionLanguage::class) && class_exists(UserInjector::class)) {
|
542 |
| - $container->getDefinition('doctrine.orm.entity_value_resolver')->setArgument(3, new Reference('doctrine.orm.entity_value_resolver_variable_injector')); |
| 544 | + $container->registerForAutoconfiguration(EntityValueResolverExpressionModifiersInjectorInterface::class)->addTag('doctrine.orm.entity_value_resolver_expression_modifier_injector'); |
| 545 | + $container->getDefinition('doctrine.orm.entity_value_resolver')->setArgument(3, new AutowireLocator('doctrine.orm.entity_value_resolver_expression_modifier_injector', indexAttribute: 'key')); |
| 546 | + $container->getDefinition('doctrine.orm.entity_value_resolver')->setArgument(4, $container->getParameter('doctrine.dbal.default_expression_modifier_injector')); |
543 | 547 | }
|
544 | 548 | }
|
545 | 549 |
|
|
0 commit comments