Skip to content

Commit 789183f

Browse files
committed
update for Expression Modifier Injector
1 parent 0a71f6e commit 789183f

File tree

3 files changed

+14
-4
lines changed

3 files changed

+14
-4
lines changed

config/orm.xml

+2-1
Original file line numberDiff line numberDiff line change
@@ -188,8 +188,9 @@
188188
<argument type="service" id="doctrine" />
189189
</service>
190190

191-
<service id="doctrine.orm.entity_value_resolver_variable_injector" class="Symfony\Bridge\Doctrine\ArgumentResolver\UserInjector">
191+
<service id="Symfony\Bridge\Doctrine\ArgumentResolver\UserInjector">
192192
<argument type="service" id="security.token_storage" on-invalid="ignore" />
193+
<tag name="doctrine.orm.entity_value_resolver_expression_modifier_injector" key="userInjector"/>
193194
</service>
194195

195196
<service id="doctrine.orm.entity_value_resolver" class="Symfony\Bridge\Doctrine\ArgumentResolver\EntityValueResolver">

src/DependencyInjection/Configuration.php

+6-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public function getConfigTreeBuilder(): TreeBuilder
7777
private function addDbalSection(ArrayNodeDefinition $node): void
7878
{
7979
// Key that should not be rewritten to the connection config
80-
$excludedKeys = ['default_connection' => true, 'driver_schemes' => true, 'driver_scheme' => true, 'types' => true, 'type' => true];
80+
$excludedKeys = ['default_connection' => true, 'driver_schemes' => true, 'driver_scheme' => true, 'types' => true, 'type' => true, 'default_expression_modifier_injector' => true];
8181

8282
$node
8383
->children()
@@ -167,6 +167,11 @@ private function addDbalSection(ArrayNodeDefinition $node): void
167167
->end()
168168
->end()
169169
->end()
170+
->children()
171+
->arrayNode('default_expression_modifier_injector')->scalarPrototype()->end()
172+
->beforeNormalization()->castToArray()->end()
173+
->end()
174+
->end()
170175
->fixXmlConfig('connection')
171176
->append($this->getDbalConnectionsNode())
172177
->end();

src/DependencyInjection/DoctrineExtension.php

+6-2
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
use InvalidArgumentException;
3434
use LogicException;
3535
use Symfony\Bridge\Doctrine\ArgumentResolver\EntityValueResolver;
36+
use Symfony\Bridge\Doctrine\ArgumentResolver\EntityValueResolverExpressionModifiersInjectorInterface;
3637
use Symfony\Bridge\Doctrine\ArgumentResolver\UserInjector;
3738
use Symfony\Bridge\Doctrine\Attribute\MapEntity;
3839
use Symfony\Bridge\Doctrine\DependencyInjection\AbstractDoctrineExtension;
@@ -51,6 +52,7 @@
5152
use Symfony\Component\Config\Definition\ConfigurationInterface;
5253
use Symfony\Component\Config\FileLocator;
5354
use Symfony\Component\DependencyInjection\Alias;
55+
use Symfony\Component\DependencyInjection\Attribute\AutowireLocator;
5456
use Symfony\Component\DependencyInjection\ChildDefinition;
5557
use Symfony\Component\DependencyInjection\ContainerBuilder;
5658
use Symfony\Component\DependencyInjection\Definition;
@@ -182,6 +184,7 @@ protected function dbalLoad(array $config, ContainerBuilder $container)
182184
$container->setAlias('doctrine.dbal.event_manager', new Alias(sprintf('doctrine.dbal.%s_connection.event_manager', $this->defaultConnection), false));
183185

184186
$container->setParameter('doctrine.dbal.connection_factory.types', $config['types']);
187+
$container->setParameter('doctrine.dbal.default_expression_modifier_injector', $config['default_expression_modifier_injector']);
185188

186189
$container->getDefinition('doctrine.dbal.connection_factory.dsn_parser')->setArgument(0, array_merge(ConnectionFactory::DEFAULT_SCHEME_MAP, $config['driver_schemes']));
187190

@@ -497,7 +500,6 @@ protected function ormLoad(array $config, ContainerBuilder $container)
497500
// available in Symfony 6.2 and higher
498501
if (! class_exists(EntityValueResolver::class)) {
499502
$container->removeDefinition('doctrine.orm.entity_value_resolver');
500-
$container->removeDefinition('doctrine.orm.entity_value_resolver.expression_language');
501503
} else {
502504
if (! class_exists(ExpressionLanguage::class)) {
503505
$container->removeDefinition('doctrine.orm.entity_value_resolver.expression_language');
@@ -539,7 +541,9 @@ protected function ormLoad(array $config, ContainerBuilder $container)
539541
}
540542

541543
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'));
543547
}
544548
}
545549

0 commit comments

Comments
 (0)