@@ -311,26 +311,6 @@ public function load(array $configs, ContainerBuilder $container)
311311 $ this ->registerRequestConfiguration ($ config ['request ' ], $ container , $ loader );
312312 }
313313
314- if ($ this ->isConfigEnabled ($ container , $ config ['form ' ])) {
315- if (!class_exists (Form::class)) {
316- throw new LogicException ('Form support cannot be enabled as the Form component is not installed. Try running "composer require symfony/form". ' );
317- }
318-
319- $ this ->formConfigEnabled = true ;
320- $ this ->registerFormConfiguration ($ config , $ container , $ loader );
321-
322- if (ContainerBuilder::willBeAvailable ('symfony/validator ' , Validation::class, ['symfony/framework-bundle ' , 'symfony/form ' ])) {
323- $ config ['validation ' ]['enabled ' ] = true ;
324- } else {
325- $ container ->setParameter ('validator.translation_domain ' , 'validators ' );
326-
327- $ container ->removeDefinition ('form.type_extension.form.validator ' );
328- $ container ->removeDefinition ('form.type_guesser.validator ' );
329- }
330- } else {
331- $ container ->removeDefinition ('console.command.form_debug ' );
332- }
333-
334314 if ($ this ->isConfigEnabled ($ container , $ config ['assets ' ])) {
335315 if (!class_exists (\Symfony \Component \Asset \Package::class)) {
336316 throw new LogicException ('Asset support cannot be enabled as the Asset component is not installed. Try running "composer require symfony/asset". ' );
@@ -339,39 +319,6 @@ public function load(array $configs, ContainerBuilder $container)
339319 $ this ->registerAssetsConfiguration ($ config ['assets ' ], $ container , $ loader );
340320 }
341321
342- if ($ this ->messengerConfigEnabled = $ this ->isConfigEnabled ($ container , $ config ['messenger ' ])) {
343- $ this ->registerMessengerConfiguration ($ config ['messenger ' ], $ container , $ loader , $ config ['validation ' ]);
344- } else {
345- $ container ->removeDefinition ('console.command.messenger_consume_messages ' );
346- $ container ->removeDefinition ('console.command.messenger_debug ' );
347- $ container ->removeDefinition ('console.command.messenger_stop_workers ' );
348- $ container ->removeDefinition ('console.command.messenger_setup_transports ' );
349- $ container ->removeDefinition ('console.command.messenger_failed_messages_retry ' );
350- $ container ->removeDefinition ('console.command.messenger_failed_messages_show ' );
351- $ container ->removeDefinition ('console.command.messenger_failed_messages_remove ' );
352- $ container ->removeDefinition ('cache.messenger.restart_workers_signal ' );
353-
354- if ($ container ->hasDefinition ('messenger.transport.amqp.factory ' ) && !class_exists (AmqpTransportFactory::class)) {
355- if (class_exists (\Symfony \Component \Messenger \Transport \AmqpExt \AmqpTransportFactory::class)) {
356- $ container ->getDefinition ('messenger.transport.amqp.factory ' )
357- ->setClass (\Symfony \Component \Messenger \Transport \AmqpExt \AmqpTransportFactory::class)
358- ->addTag ('messenger.transport_factory ' );
359- } else {
360- $ container ->removeDefinition ('messenger.transport.amqp.factory ' );
361- }
362- }
363-
364- if ($ container ->hasDefinition ('messenger.transport.redis.factory ' ) && !class_exists (RedisTransportFactory::class)) {
365- if (class_exists (\Symfony \Component \Messenger \Transport \RedisExt \RedisTransportFactory::class)) {
366- $ container ->getDefinition ('messenger.transport.redis.factory ' )
367- ->setClass (\Symfony \Component \Messenger \Transport \RedisExt \RedisTransportFactory::class)
368- ->addTag ('messenger.transport_factory ' );
369- } else {
370- $ container ->removeDefinition ('messenger.transport.redis.factory ' );
371- }
372- }
373- }
374-
375322 if ($ this ->httpClientConfigEnabled = $ this ->isConfigEnabled ($ container , $ config ['http_client ' ])) {
376323 $ this ->registerHttpClientConfiguration ($ config ['http_client ' ], $ container , $ loader , $ config ['profiler ' ]);
377324 }
@@ -380,18 +327,12 @@ public function load(array $configs, ContainerBuilder $container)
380327 $ this ->registerMailerConfiguration ($ config ['mailer ' ], $ container , $ loader );
381328 }
382329
383- if ($ this ->notifierConfigEnabled = $ this ->isConfigEnabled ($ container , $ config ['notifier ' ])) {
384- $ this ->registerNotifierConfiguration ($ config ['notifier ' ], $ container , $ loader );
385- }
386-
387330 $ propertyInfoEnabled = $ this ->isConfigEnabled ($ container , $ config ['property_info ' ]);
388- $ this ->registerValidationConfiguration ($ config ['validation ' ], $ container , $ loader , $ propertyInfoEnabled );
389331 $ this ->registerHttpCacheConfiguration ($ config ['http_cache ' ], $ container , $ config ['http_method_override ' ]);
390332 $ this ->registerEsiConfiguration ($ config ['esi ' ], $ container , $ loader );
391333 $ this ->registerSsiConfiguration ($ config ['ssi ' ], $ container , $ loader );
392334 $ this ->registerFragmentsConfiguration ($ config ['fragments ' ], $ container , $ loader );
393335 $ this ->registerTranslatorConfiguration ($ config ['translator ' ], $ container , $ loader , $ config ['default_locale ' ]);
394- $ this ->registerProfilerConfiguration ($ config ['profiler ' ], $ container , $ loader );
395336 $ this ->registerWorkflowConfiguration ($ config ['workflows ' ], $ container , $ loader );
396337 $ this ->registerDebugConfiguration ($ config ['php_errors ' ], $ container , $ loader );
397338 $ this ->registerRouterConfiguration ($ config ['router ' ], $ container , $ loader , $ config ['translator ' ]['enabled_locales ' ] ?? []);
@@ -461,6 +402,72 @@ public function load(array $configs, ContainerBuilder $container)
461402 }
462403 $ this ->registerSecurityCsrfConfiguration ($ config ['csrf_protection ' ], $ container , $ loader );
463404
405+ // form depends on csrf being registered
406+ if ($ this ->isConfigEnabled ($ container , $ config ['form ' ])) {
407+ if (!class_exists (Form::class)) {
408+ throw new LogicException ('Form support cannot be enabled as the Form component is not installed. Try running "composer require symfony/form". ' );
409+ }
410+
411+ $ this ->formConfigEnabled = true ;
412+ $ this ->registerFormConfiguration ($ config , $ container , $ loader );
413+
414+ if (ContainerBuilder::willBeAvailable ('symfony/validator ' , Validation::class, ['symfony/framework-bundle ' , 'symfony/form ' ])) {
415+ $ config ['validation ' ]['enabled ' ] = true ;
416+ } else {
417+ $ container ->setParameter ('validator.translation_domain ' , 'validators ' );
418+
419+ $ container ->removeDefinition ('form.type_extension.form.validator ' );
420+ $ container ->removeDefinition ('form.type_guesser.validator ' );
421+ }
422+ } else {
423+ $ container ->removeDefinition ('console.command.form_debug ' );
424+ }
425+
426+ // validation depends on form, annotations being registered
427+ $ this ->registerValidationConfiguration ($ config ['validation ' ], $ container , $ loader , $ propertyInfoEnabled );
428+
429+ // messenger depends on validation being registered
430+ if ($ this ->messengerConfigEnabled = $ this ->isConfigEnabled ($ container , $ config ['messenger ' ])) {
431+ $ this ->registerMessengerConfiguration ($ config ['messenger ' ], $ container , $ loader , $ config ['validation ' ]);
432+ } else {
433+ $ container ->removeDefinition ('console.command.messenger_consume_messages ' );
434+ $ container ->removeDefinition ('console.command.messenger_debug ' );
435+ $ container ->removeDefinition ('console.command.messenger_stop_workers ' );
436+ $ container ->removeDefinition ('console.command.messenger_setup_transports ' );
437+ $ container ->removeDefinition ('console.command.messenger_failed_messages_retry ' );
438+ $ container ->removeDefinition ('console.command.messenger_failed_messages_show ' );
439+ $ container ->removeDefinition ('console.command.messenger_failed_messages_remove ' );
440+ $ container ->removeDefinition ('cache.messenger.restart_workers_signal ' );
441+
442+ if ($ container ->hasDefinition ('messenger.transport.amqp.factory ' ) && !class_exists (AmqpTransportFactory::class)) {
443+ if (class_exists (\Symfony \Component \Messenger \Transport \AmqpExt \AmqpTransportFactory::class)) {
444+ $ container ->getDefinition ('messenger.transport.amqp.factory ' )
445+ ->setClass (\Symfony \Component \Messenger \Transport \AmqpExt \AmqpTransportFactory::class)
446+ ->addTag ('messenger.transport_factory ' );
447+ } else {
448+ $ container ->removeDefinition ('messenger.transport.amqp.factory ' );
449+ }
450+ }
451+
452+ if ($ container ->hasDefinition ('messenger.transport.redis.factory ' ) && !class_exists (RedisTransportFactory::class)) {
453+ if (class_exists (\Symfony \Component \Messenger \Transport \RedisExt \RedisTransportFactory::class)) {
454+ $ container ->getDefinition ('messenger.transport.redis.factory ' )
455+ ->setClass (\Symfony \Component \Messenger \Transport \RedisExt \RedisTransportFactory::class)
456+ ->addTag ('messenger.transport_factory ' );
457+ } else {
458+ $ container ->removeDefinition ('messenger.transport.redis.factory ' );
459+ }
460+ }
461+ }
462+
463+ // notifier depends on messenger, mailer being registered
464+ if ($ this ->notifierConfigEnabled = $ this ->isConfigEnabled ($ container , $ config ['notifier ' ])) {
465+ $ this ->registerNotifierConfiguration ($ config ['notifier ' ], $ container , $ loader );
466+ }
467+
468+ // profiler depends on form, validation, translation, messenger, mailer, http-client, notifier being registered
469+ $ this ->registerProfilerConfiguration ($ config ['profiler ' ], $ container , $ loader );
470+
464471 $ this ->addAnnotatedClassesToCompile ([
465472 '** \\Controller \\' ,
466473 '** \\Entity \\' ,
0 commit comments