2 session.storage.options:
6 cookie_lifetime: 2000000
12 required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions']
13 auto_placeholder_conditions:
15 contexts: ['session', 'user']
18 default: keyvalue.database
19 http.response.debug_cacheability_headers: false
20 factory.keyvalue.expirable:
21 default: keyvalue.expirable.database
43 supportsCredentials: false
44 tempstore.expire: 604800
46 # Simple cache contexts, directly derived from the request context.
48 class: Drupal\Core\Cache\Context\IpCacheContext
49 arguments: ['@request_stack']
51 - { name: cache.context }
52 cache_context.headers:
53 class: Drupal\Core\Cache\Context\HeadersCacheContext
54 arguments: ['@request_stack']
56 - { name: cache.context }
57 cache_context.cookies:
58 class: Drupal\Core\Cache\Context\CookiesCacheContext
59 arguments: ['@request_stack']
61 - { name: cache.context }
62 cache_context.session:
63 class: Drupal\Core\Cache\Context\SessionCacheContext
64 arguments: ['@request_stack']
66 - { name: cache.context}
67 cache_context.session.exists:
68 class: Drupal\Core\Cache\Context\SessionExistsCacheContext
69 arguments: ['@session_configuration', '@request_stack']
71 - { name: cache.context}
72 cache_context.request_format:
73 class: Drupal\Core\Cache\Context\RequestFormatCacheContext
74 arguments: ['@request_stack']
76 - { name: cache.context }
78 class: Drupal\Core\Cache\Context\UrlCacheContext
79 arguments: ['@request_stack']
81 - { name: cache.context }
82 cache_context.url.site:
83 class: Drupal\Core\Cache\Context\SiteCacheContext
84 arguments: ['@request_stack']
86 - { name: cache.context }
87 cache_context.url.path:
88 class: Drupal\Core\Cache\Context\PathCacheContext
89 arguments: ['@request_stack']
91 - { name: cache.context }
92 cache_context.url.path.parent:
93 class: Drupal\Core\Cache\Context\PathParentCacheContext
94 arguments: ['@request_stack']
96 - { name: cache.context }
97 cache_context.url.path.is_front:
98 class: Drupal\Core\Cache\Context\IsFrontPathCacheContext
99 arguments: ['@path.matcher']
101 - { name: cache.context }
102 cache_context.url.query_args:
103 class: Drupal\Core\Cache\Context\QueryArgsCacheContext
104 arguments: ['@request_stack']
106 - { name: cache.context }
107 cache_context.url.query_args.pagers:
108 class: Drupal\Core\Cache\Context\PagersCacheContext
109 arguments: ['@request_stack']
111 - { name: cache.context }
113 # Complex cache contexts, that depend on the routing system.
115 class: Drupal\Core\Cache\Context\RouteCacheContext
116 arguments: ['@current_route_match']
118 - { name: cache.context }
119 cache_context.route.name:
120 class: Drupal\Core\Cache\Context\RouteNameCacheContext
121 arguments: ['@current_route_match']
123 - { name: cache.context }
124 cache_context.route.menu_active_trails:
125 class: Drupal\Core\Cache\Context\MenuActiveTrailsCacheContext
127 - [setContainer, ['@service_container']]
129 - { name: cache.context }
131 # Complex cache contexts, that may be calculated from a combination of
132 # multiple aspects of the request context plus additional logic. Hence they
133 # are their own roots.
135 class: Drupal\Core\Cache\Context\UserCacheContext
136 arguments: ['@current_user']
138 - { name: cache.context}
139 cache_context.user.permissions:
140 class: Drupal\Core\Cache\Context\AccountPermissionsCacheContext
141 arguments: ['@current_user', '@user_permissions_hash_generator']
143 - { name: cache.context}
144 cache_context.user.roles:
145 class: Drupal\Core\Cache\Context\UserRolesCacheContext
146 arguments: ['@current_user']
148 - { name: cache.context}
149 cache_context.user.is_super_user:
150 class: Drupal\Core\Cache\Context\IsSuperUserCacheContext
151 arguments: ['@current_user']
153 - { name: cache.context}
154 cache_context.languages:
155 class: Drupal\Core\Cache\Context\LanguagesCacheContext
156 arguments: ['@language_manager']
158 - { name: cache.context}
160 class: Drupal\Core\Cache\Context\ThemeCacheContext
161 arguments: ['@theme.manager']
163 - { name: cache.context}
164 cache_context.timezone:
165 class: Drupal\Core\Cache\Context\TimeZoneCacheContext
167 - { name: cache.context}
170 class: Drupal\Core\Cache\CacheFactory
171 arguments: ['@settings', '%cache_default_bin_backends%']
173 - [setContainer, ['@service_container']]
174 cache_contexts_manager:
175 class: Drupal\Core\Cache\Context\CacheContextsManager
176 arguments: ['@service_container', '%cache_contexts%' ]
177 cache_tags.invalidator:
178 parent: container.trait
179 class: Drupal\Core\Cache\CacheTagsInvalidator
181 - [setContainer, ['@service_container']]
183 - { name: service_collector, call: addInvalidator, tag: cache_tags_invalidator }
184 cache_tags.invalidator.checksum:
185 class: Drupal\Core\Cache\DatabaseCacheTagsChecksum
186 arguments: ['@database']
188 - { name: cache_tags_invalidator}
189 cache.backend.chainedfast:
190 class: Drupal\Core\Cache\ChainedFastBackendFactory
191 arguments: ['@settings']
193 - [setContainer, ['@service_container']]
194 cache.backend.database:
195 class: Drupal\Core\Cache\DatabaseBackendFactory
196 arguments: ['@database', '@cache_tags.invalidator.checksum', '@settings']
198 class: Drupal\Core\Cache\ApcuBackendFactory
199 arguments: ['@app.root', '@site.path', '@cache_tags.invalidator.checksum']
201 class: Drupal\Core\Cache\PhpBackendFactory
202 arguments: ['@cache_tags.invalidator.checksum']
203 cache.backend.memory:
204 class: Drupal\Core\Cache\MemoryBackendFactory
205 # A special cache bin that does not persist beyond the length of the request.
207 class: Drupal\Core\Cache\CacheBackendInterface
209 - { name: cache.bin, default_backend: cache.backend.memory }
210 factory: cache_factory:get
213 class: Drupal\Core\Cache\CacheBackendInterface
215 - { name: cache.bin, default_backend: cache.backend.chainedfast }
216 factory: cache_factory:get
217 arguments: [bootstrap]
219 class: Drupal\Core\Cache\CacheBackendInterface
221 - { name: cache.bin, default_backend: cache.backend.chainedfast }
222 factory: cache_factory:get
225 class: Drupal\Core\Cache\CacheBackendInterface
227 - { name: cache.bin }
228 factory: cache_factory:get
231 class: Drupal\Core\Cache\CacheBackendInterface
233 - { name: cache.bin }
234 factory: cache_factory:get
237 class: Drupal\Core\Cache\CacheBackendInterface
239 - { name: cache.bin }
240 factory: cache_factory:get
243 class: Drupal\Core\Cache\CacheBackendInterface
245 - { name: cache.bin }
246 factory: cache_factory:get
249 class: Drupal\Core\Cache\CacheBackendInterface
251 - { name: cache.bin }
252 factory: cache_factory:get
255 class: Drupal\Core\Cache\CacheBackendInterface
257 - { name: cache.bin, default_backend: cache.backend.chainedfast }
258 factory: cache_factory:get
259 arguments: [discovery]
260 cache_router_rebuild_subscriber:
261 class: Drupal\Core\EventSubscriber\CacheRouterRebuildSubscriber
263 - { name: event_subscriber }
264 page_cache_request_policy:
265 class: Drupal\Core\PageCache\DefaultRequestPolicy
266 arguments: ['@session_configuration']
268 - { name: service_collector, tag: page_cache_request_policy, call: addPolicy}
269 page_cache_response_policy:
270 class: Drupal\Core\PageCache\ChainResponsePolicy
272 - { name: service_collector, tag: page_cache_response_policy, call: addPolicy}
274 page_cache_kill_switch:
275 class: Drupal\Core\PageCache\ResponsePolicy\KillSwitch
277 - { name: page_cache_response_policy }
278 - { name: dynamic_page_cache_response_policy }
279 page_cache_no_cache_routes:
280 class: Drupal\Core\PageCache\ResponsePolicy\DenyNoCacheRoutes
281 arguments: ['@current_route_match']
284 - { name: page_cache_response_policy }
285 - { name: dynamic_page_cache_response_policy }
286 page_cache_no_server_error:
287 class: Drupal\Core\PageCache\ResponsePolicy\NoServerError
290 - { name: page_cache_response_policy }
291 - { name: dynamic_page_cache_response_policy }
293 class: Drupal\Core\Config\ConfigManager
294 arguments: ['@entity.manager', '@config.factory', '@config.typed', '@string_translation', '@config.storage', '@event_dispatcher']
296 class: Drupal\Core\Config\ConfigFactory
298 - { name: event_subscriber }
299 - { name: service_collector, tag: 'config.factory.override', call: addOverride }
300 arguments: ['@config.storage', '@event_dispatcher', '@config.typed']
301 config.importer_subscriber:
302 class: Drupal\Core\Config\Importer\FinalMissingContentSubscriber
304 - { name: event_subscriber }
306 class: Drupal\Core\Config\ConfigInstaller
307 arguments: ['@config.factory', '@config.storage', '@config.typed', '@config.manager', '@event_dispatcher', '%install_profile%']
310 class: Drupal\Core\Config\CachedStorage
311 arguments: ['@config.storage.active', '@cache.config']
312 config.storage.active:
313 class: Drupal\Core\Config\DatabaseStorage
314 arguments: ['@database', 'config']
317 - { name: backend_overridable }
318 # @deprecated in Drupal 8.0.x and will be removed before 9.0.0. Use
319 # config.storage.sync instead.
320 # @see https://www.drupal.org/node/2574957
321 config.storage.staging:
322 class: Drupal\Core\Config\FileStorage
323 factory: Drupal\Core\Config\FileStorageFactory::getSync
325 alias: config.storage.staging
326 config.storage.snapshot:
327 class: Drupal\Core\Config\DatabaseStorage
328 arguments: ['@database', config_snapshot]
330 - { name: backend_overridable }
331 config.storage.schema:
332 class: Drupal\Core\Config\ExtensionInstallStorage
333 arguments: ['@config.storage', 'config/schema', '', true, '%install_profile%']
335 class: Drupal\Core\Config\TypedConfigManager
336 arguments: ['@config.storage', '@config.storage.schema', '@cache.discovery', '@module_handler', '@class_resolver']
338 - { name: plugin_manager_cache_clear }
340 - [setValidationConstraintManager, ['@validation.constraint']]
342 class: Drupal\Core\Plugin\Context\ContextHandler
343 arguments: ['@typed_data_manager']
345 class: Drupal\Core\Plugin\Context\LazyContextRepository
346 arguments: ['@service_container']
348 class: Drupal\Core\Cron
349 arguments: ['@module_handler', '@lock', '@queue', '@state', '@account_switcher', '@logger.channel.cron', '@plugin.manager.queue_worker', '@datetime.time']
352 class: Drupal\Core\Diff\DiffFormatter
353 arguments: ['@config.factory']
355 class: Drupal\Core\Database\Connection
356 factory: Drupal\Core\Database\Database::getConnection
359 class: Drupal\Component\Datetime\Time
360 arguments: ['@request_stack']
362 class: Drupal\Core\File\FileSystem
363 arguments: ['@stream_wrapper_manager', '@settings', '@logger.channel.file']
365 class: Drupal\Core\Form\FormBuilder
366 arguments: ['@form_validator', '@form_submitter', '@form_cache', '@module_handler', '@event_dispatcher', '@request_stack', '@class_resolver', '@element_info', '@theme.manager', '@?csrf_token']
368 class: Drupal\Core\Form\FormValidator
369 arguments: ['@request_stack', '@string_translation', '@csrf_token', '@logger.channel.form', '@form_error_handler']
371 class: Drupal\Core\Form\FormSubmitter
372 arguments: ['@request_stack', '@url_generator']
374 class: Drupal\Core\Form\FormErrorHandler
376 class: Drupal\Core\Form\FormCache
377 arguments: ['@app.root', '@keyvalue.expirable', '@module_handler', '@current_user', '@csrf_token', '@logger.channel.form', '@request_stack', '@page_cache_request_policy']
378 public: false # Private to form_builder
380 class: Drupal\Core\KeyValueStore\KeyValueFactory
381 arguments: ['@service_container', '%factory.keyvalue%']
383 class: Drupal\Core\KeyValueStore\KeyValueDatabaseFactory
384 arguments: ['@serialization.phpserialize', '@database']
386 class: Drupal\Core\KeyValueStore\KeyValueExpirableFactory
387 arguments: ['@service_container', '%factory.keyvalue.expirable%']
388 keyvalue.expirable.database:
389 class: Drupal\Core\KeyValueStore\KeyValueDatabaseExpirableFactory
390 arguments: ['@serialization.phpserialize', '@database']
392 class: Drupal\Core\Logger\LoggerChannelFactory
393 parent: container.trait
395 - { name: service_collector, tag: logger, call: addLogger }
398 class: Drupal\Core\Logger\LoggerChannel
399 factory: logger.factory:get
400 logger.channel.default:
401 parent: logger.channel_base
402 arguments: ['system']
404 parent: logger.channel_base
406 logger.channel.image:
407 parent: logger.channel_base
410 parent: logger.channel_base
413 class: Drupal\Core\Logger\LoggerChannel
414 factory: logger.factory:get
417 parent: logger.channel_base
419 logger.log_message_parser:
420 class: Drupal\Core\Logger\LogMessageParser
423 class: Drupal\Component\Serialization\Json
424 serialization.phpserialize:
425 class: Drupal\Component\Serialization\PhpSerialize
427 class: Drupal\Component\Serialization\Yaml
430 class: Drupal\Core\Site\Settings
431 factory: Drupal\Core\Site\Settings::getInstance
433 class: Drupal\Core\State\State
434 arguments: ['@keyvalue']
436 class: Drupal\Core\Queue\QueueFactory
437 arguments: ['@settings']
439 - [setContainer, ['@service_container']]
441 class: Drupal\Core\Queue\QueueDatabaseFactory
442 arguments: ['@database']
443 path.alias_whitelist:
444 class: Drupal\Core\Path\AliasWhitelist
446 - { name: needs_destruction }
447 arguments: [path_alias_whitelist, '@cache.bootstrap', '@lock', '@state', '@path.alias_storage']
449 class: Drupal\Core\Path\AliasManager
450 arguments: ['@path.alias_storage', '@path.alias_whitelist', '@language_manager', '@cache.data']
452 class: Drupal\Core\Path\CurrentPathStack
453 arguments: ['@request_stack']
455 class: GuzzleHttp\HandlerStack
457 factory: GuzzleHttp\HandlerStack::create
458 configurator: ['@http_handler_stack_configurator', configure]
459 http_handler_stack_configurator:
460 class: Drupal\Core\Http\HandlerStackConfigurator
462 arguments: ['@service_container']
464 class: GuzzleHttp\Client
465 factory: http_client_factory:fromOptions
467 class: Drupal\Core\Http\ClientFactory
468 arguments: ['@http_handler_stack']
469 plugin.manager.link_relation_type:
470 class: \Drupal\Core\Http\LinkRelationTypeManager
471 arguments: ['@app.root', '@module_handler', '@cache.discovery']
473 class: Drupal\Core\Theme\ThemeNegotiator
474 arguments: ['@access_check.theme', '@class_resolver']
476 - { name: service_id_collector, tag: theme_negotiator }
477 theme.negotiator.default:
478 class: Drupal\Core\Theme\DefaultNegotiator
479 arguments: ['@config.factory']
481 - { name: theme_negotiator, priority: -100 }
482 theme.negotiator.ajax_base_page:
483 class: Drupal\Core\Theme\AjaxBasePageNegotiator
484 arguments: ['@csrf_token', '@config.factory', '@request_stack']
486 - { name: theme_negotiator, priority: 1000 }
487 container.namespaces:
489 arguments: [ '%container.namespaces%' ]
493 - [setContainer, ['@service_container']]
494 default_plugin_manager:
496 arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
498 class: Drupal\Core\Extension\ModuleHandler
499 arguments: ['@app.root', '%container.modules%', '@cache.bootstrap']
501 class: Drupal\Core\Extension\ModuleInstaller
503 - { name: service_collector, tag: 'module_install.uninstall_validator', call: addUninstallValidator }
504 arguments: ['@app.root', '@module_handler', '@kernel', '@router.builder']
506 extension.list.module:
507 class: Drupal\Core\Extension\ModuleExtensionList
508 arguments: ['@app.root', 'module', '@cache.default', '@info_parser', '@module_handler', '@state', '@config.factory', '@extension.list.profile', '%install_profile%', '%container.modules%']
509 extension.list.profile:
510 class: Drupal\Core\Extension\ProfileExtensionList
511 arguments: ['@app.root', 'profile', '@cache.default', '@info_parser', '@module_handler', '@state', '%install_profile%']
512 content_uninstall_validator:
513 class: Drupal\Core\Entity\ContentUninstallValidator
515 - { name: module_install.uninstall_validator }
516 arguments: ['@entity.manager', '@string_translation']
518 required_module_uninstall_validator:
519 class: Drupal\Core\Extension\RequiredModuleUninstallValidator
521 - { name: module_install.uninstall_validator }
522 arguments: ['@string_translation']
525 class: Drupal\Core\Extension\ThemeHandler
526 arguments: ['@app.root', '@config.factory', '@module_handler', '@state', '@info_parser']
528 class: Drupal\Core\Extension\ThemeInstaller
529 arguments: ['@theme_handler', '@config.factory', '@config.installer', '@module_handler', '@config.manager', '@asset.css.collection_optimizer', '@router.builder', '@logger.channel.default', '@state']
530 # @deprecated in Drupal 8.0.x and will be removed before 9.0.0. Use the other
531 # entity* services instead.
533 # We cannot set the deprecated property here because many test cases still
534 # rely on this service and they would fail with deprecation warnings.
535 class: Drupal\Core\Entity\EntityManager
536 parent: container.trait
537 # @todo Remove this tag in https://www.drupal.org/node/2549143.
539 - { name: plugin_manager_cache_clear }
541 class: Drupal\Core\Cache\MemoryCache\MemoryCache
543 class: Drupal\Core\Entity\EntityTypeManager
544 arguments: ['@container.namespaces', '@module_handler', '@cache.discovery', '@string_translation', '@class_resolver']
545 parent: container.trait
547 - { name: plugin_manager_cache_clear }
548 entity_type.repository:
549 class: Drupal\Core\Entity\EntityTypeRepository
550 arguments: ['@entity_type.manager']
551 entity_type.bundle.info:
552 class: Drupal\Core\Entity\EntityTypeBundleInfo
553 arguments: ['@entity_type.manager', '@language_manager', '@module_handler', '@typed_data_manager', '@cache.discovery']
555 class: Drupal\Core\Entity\EntityRepository
556 arguments: ['@entity_type.manager', '@language_manager']
557 entity_display.repository:
558 class: Drupal\Core\Entity\EntityDisplayRepository
559 arguments: ['@entity_type.manager', '@module_handler', '@cache.discovery', '@language_manager']
560 entity_field.manager:
561 class: Drupal\Core\Entity\EntityFieldManager
562 arguments: ['@entity_type.manager', '@entity_type.bundle.info', '@entity_display.repository', '@typed_data_manager', '@language_manager', '@keyvalue', '@module_handler', '@cache.discovery']
563 entity_type.listener:
564 class: Drupal\Core\Entity\EntityTypeListener
565 arguments: ['@entity_type.manager', '@entity_field.manager', '@event_dispatcher', '@entity.last_installed_schema.repository']
566 entity_bundle.listener:
567 class: Drupal\Core\Entity\EntityBundleListener
568 arguments: ['@entity_type.manager', '@entity_type.bundle.info', '@entity_field.manager', '@module_handler']
569 entity_route_subscriber:
570 class: Drupal\Core\EventSubscriber\EntityRouteProviderSubscriber
571 arguments: ['@entity.manager']
573 - { name: event_subscriber }
574 entity.definition_update_manager:
575 class: Drupal\Core\Entity\EntityDefinitionUpdateManager
576 arguments: ['@entity.manager', '@entity.last_installed_schema.repository']
577 entity.last_installed_schema.repository:
578 class: Drupal\Core\Entity\EntityLastInstalledSchemaRepository
579 arguments: ['@keyvalue']
580 entity_field.deleted_fields_repository:
581 class: Drupal\Core\Field\DeletedFieldsRepository
582 arguments: ['@state']
583 field_storage_definition.listener:
584 class: Drupal\Core\Field\FieldStorageDefinitionListener
585 arguments: ['@entity_type.manager', '@event_dispatcher', '@entity.last_installed_schema.repository', '@entity_field.manager', '@entity_field.deleted_fields_repository']
586 field_definition.listener:
587 class: Drupal\Core\Field\FieldDefinitionListener
588 arguments: ['@entity_type.manager', '@entity_field.manager', '@keyvalue', '@cache.discovery']
590 class: Drupal\Core\Entity\EntityFormBuilder
591 arguments: ['@entity.manager', '@form_builder']
592 entity.bundle_config_import_validator:
593 class: Drupal\Core\Entity\Event\BundleConfigImportValidate
594 arguments: ['@config.manager', '@entity.manager']
596 - { name: event_subscriber }
597 entity.autocomplete_matcher:
598 class: Drupal\Core\Entity\EntityAutocompleteMatcher
599 arguments: ['@plugin.manager.entity_reference_selection']
601 class: Drupal\Core\Plugin\PluginFormFactory
602 arguments: ['@class_resolver']
603 plugin.manager.entity_reference_selection:
604 class: Drupal\Core\Entity\EntityReferenceSelection\SelectionPluginManager
605 parent: default_plugin_manager
606 plugin.manager.block:
607 class: Drupal\Core\Block\BlockManager
608 parent: default_plugin_manager
609 arguments: ['@logger.channel.default']
610 plugin.manager.field.field_type:
611 class: Drupal\Core\Field\FieldTypePluginManager
612 arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@typed_data_manager']
613 plugin.manager.field.widget:
614 class: Drupal\Core\Field\WidgetPluginManager
615 arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@plugin.manager.field.field_type']
616 plugin.manager.field.formatter:
617 class: Drupal\Core\Field\FormatterPluginManager
618 arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@plugin.manager.field.field_type']
619 plugin.manager.archiver:
620 class: Drupal\Core\Archiver\ArchiverManager
621 parent: default_plugin_manager
622 plugin.manager.action:
623 class: Drupal\Core\Action\ActionManager
624 arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
625 plugin.manager.menu.link:
626 class: Drupal\Core\Menu\MenuLinkManager
627 arguments: ['@menu.tree_storage', '@menu_link.static.overrides', '@module_handler']
629 class: Drupal\Core\Menu\MenuLinkTree
630 arguments: ['@menu.tree_storage', '@plugin.manager.menu.link', '@router.route_provider', '@menu.active_trail', '@controller_resolver']
631 menu.default_tree_manipulators:
632 class: Drupal\Core\Menu\DefaultMenuLinkTreeManipulators
633 arguments: ['@access_manager', '@current_user', '@entity_type.manager']
635 class: Drupal\Core\Menu\MenuActiveTrail
636 arguments: ['@plugin.manager.menu.link', '@current_route_match', '@cache.menu', '@lock']
638 - { name: needs_destruction }
639 menu.parent_form_selector:
640 class: Drupal\Core\Menu\MenuParentFormSelector
641 arguments: ['@menu.link_tree', '@entity.manager', '@string_translation']
642 plugin.manager.menu.local_action:
643 class: Drupal\Core\Menu\LocalActionManager
644 arguments: ['@http_kernel.controller.argument_resolver', '@request_stack', '@current_route_match', '@router.route_provider', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user']
645 plugin.manager.menu.local_task:
646 class: Drupal\Core\Menu\LocalTaskManager
647 arguments: ['@http_kernel.controller.argument_resolver', '@request_stack', '@current_route_match', '@router.route_provider', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user']
648 plugin.manager.menu.contextual_link:
649 class: Drupal\Core\Menu\ContextualLinkManager
650 arguments: ['@controller_resolver', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user', '@request_stack']
651 plugin.manager.display_variant:
652 class: Drupal\Core\Display\VariantManager
653 parent: default_plugin_manager
654 plugin.manager.queue_worker:
655 class: Drupal\Core\Queue\QueueWorkerManager
656 parent: default_plugin_manager
657 plugin.cache_clearer:
658 class: Drupal\Core\Plugin\CachedDiscoveryClearer
660 paramconverter.menu_link:
661 class: Drupal\Core\ParamConverter\MenuLinkPluginConverter
663 - { name: paramconverter }
664 arguments: ['@plugin.manager.menu.link']
667 class: Drupal\Core\Menu\MenuTreeStorage
668 arguments: ['@database', '@cache.menu', '@cache_tags.invalidator', 'menu_tree']
669 public: false # Private to plugin.manager.menu.link and menu.link_tree
671 - { name: backend_overridable }
672 menu_link.static.overrides:
673 class: Drupal\Core\Menu\StaticMenuLinkOverrides
674 arguments: ['@config.factory']
676 class: Symfony\Component\HttpFoundation\RequestStack
680 class: Drupal\Core\Routing\CurrentRouteMatch
681 arguments: ['@request_stack']
683 class: Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher
684 arguments: ['@service_container']
687 factory: app.root.factory:get
689 - { name: parameter_service }
691 class: Drupal\Core\AppRootFactory
692 arguments: ['@kernel']
696 factory: site.path.factory:get
698 - { name: parameter_service }
700 class: Drupal\Core\SitePathFactory
701 arguments: ['@kernel']
704 class: Drupal\Core\Controller\ControllerResolver
705 arguments: ['@psr7.http_message_factory', '@class_resolver']
707 class: Drupal\Core\DependencyInjection\ClassResolver
709 - [setContainer, ['@service_container']]
711 class: Drupal\Core\Controller\TitleResolver
712 arguments: ['@controller_resolver', '@string_translation', '@http_kernel.controller.argument_resolver']
714 class: Stack\StackedHttpKernel
716 class: Symfony\Component\HttpKernel\HttpKernel
717 arguments: ['@event_dispatcher', '@controller_resolver', '@request_stack', '@http_kernel.controller.argument_resolver']
718 http_kernel.controller.argument_resolver:
719 class: Symfony\Component\HttpKernel\Controller\ArgumentResolver
720 arguments: ['@http_kernel.controller.argument_metadata_factory', ['@argument_resolver.request_attribute', '@argument_resolver.raw_parameter', '@argument_resolver.request', '@argument_resolver.psr7_request', '@argument_resolver.route_match', '@argument_resolver.default']]
721 http_kernel.controller.argument_metadata_factory:
722 class: Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactory
724 argument_resolver.request_attribute:
725 class: Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestAttributeValueResolver
727 argument_resolver.raw_parameter:
728 class: Drupal\Core\Controller\ArgumentResolver\RawParameterValueResolver
730 argument_resolver.request:
731 class: Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestValueResolver
733 argument_resolver.psr7_request:
734 class: Drupal\Core\Controller\ArgumentResolver\Psr7RequestValueResolver
735 arguments: ['@psr7.http_message_factory']
737 argument_resolver.route_match:
738 class: Drupal\Core\Controller\ArgumentResolver\RouteMatchValueResolver
740 argument_resolver.default:
741 class: Symfony\Component\HttpKernel\Controller\ArgumentResolver\DefaultValueResolver
743 http_middleware.negotiation:
744 class: Drupal\Core\StackMiddleware\NegotiationMiddleware
746 - { name: http_middleware, priority: 400 }
747 http_middleware.reverse_proxy:
748 class: Drupal\Core\StackMiddleware\ReverseProxyMiddleware
749 arguments: ['@settings']
751 - { name: http_middleware, priority: 300 }
752 http_middleware.kernel_pre_handle:
753 class: Drupal\Core\StackMiddleware\KernelPreHandle
754 arguments: ['@kernel']
756 - { name: http_middleware, priority: 100 }
757 http_middleware.session:
758 class: Drupal\Core\StackMiddleware\Session
760 - { name: http_middleware, priority: 50 }
762 - [setContainer, ['@service_container']]
763 http_middleware.cors:
764 class: Asm89\Stack\Cors
765 arguments: ['%cors.config%']
767 - { name: http_middleware, priority: 250 }
768 psr7.http_foundation_factory:
769 class: Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory
770 psr7.http_message_factory:
771 class: Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory
773 class: Drupal\Core\Language\LanguageManager
774 arguments: ['@language.default']
775 language.current_language_context:
776 class: Drupal\Core\Language\ContextProvider\CurrentLanguageContext
777 arguments: ['@language_manager']
779 - { name: 'context_provider' }
781 class: Drupal\Core\Language\LanguageDefault
782 arguments: ['%language.default_values%']
783 string_translator.custom_strings:
784 class: Drupal\Core\StringTranslation\Translator\CustomStrings
785 arguments: ['@settings']
787 - { name: string_translator, priority: 30 }
789 class: Drupal\Core\StringTranslation\TranslationManager
790 arguments: ['@language.default']
792 - { name: service_collector, tag: string_translator, call: addTranslator }
794 class: Drupal\Core\Database\Connection
795 factory: Drupal\Core\Database\Database::getConnection
798 class: Drupal\Core\TypedData\TypedDataManager
799 arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@class_resolver']
801 - [setValidationConstraintManager, ['@validation.constraint']]
803 - { name: plugin_manager_cache_clear }
804 validation.constraint:
805 class: Drupal\Core\Validation\ConstraintManager
806 parent: default_plugin_manager
808 - { name: plugin_manager_cache_clear }
810 class: Drupal\Core\Lock\DatabaseLockBackend
811 arguments: ['@database']
813 - { name: backend_overridable }
816 class: Drupal\Core\Lock\PersistentDatabaseLockBackend
817 arguments: ['@database']
819 - { name: backend_overridable }
821 router.request_context:
822 class: Drupal\Core\Routing\RequestContext
826 - [fromRequestStack, ['@request_stack']]
827 router.admin_context:
828 class: Drupal\Core\Routing\AdminContext
829 arguments: ['@current_route_match']
830 router.route_provider:
831 class: Drupal\Core\Routing\RouteProvider
832 arguments: ['@database', '@state', '@path.current', '@cache.data', '@path_processor_manager', '@cache_tags.invalidator', 'router', '@language_manager']
834 - { name: event_subscriber }
835 - { name: backend_overridable }
836 router.route_provider.lazy_builder:
837 class: Drupal\Core\Routing\RouteProviderLazyBuilder
838 arguments: ['@router.route_provider', '@router.builder']
840 - { name: event_subscriber }
841 router.route_preloader:
842 class: Drupal\Core\Routing\RoutePreloader
843 arguments: ['@router.route_provider', '@state', '@cache.bootstrap']
845 - { name: 'event_subscriber' }
846 router.matcher.final_matcher:
847 class: Drupal\Core\Routing\UrlMatcher
848 arguments: ['@path.current']
849 deprecated: The "%service_id%" service is deprecated. You should use the 'router.no_access_checks' service instead.
851 class: Symfony\Cmf\Component\Routing\NestedMatcher\NestedMatcher
852 arguments: ['@router.route_provider']
854 - [setFinalMatcher, ['@router.matcher.final_matcher']]
856 - { name: service_collector, tag: non_lazy_route_filter, call: addRouteFilter }
857 deprecated: The "%service_id%" service is deprecated. You should use the 'router.no_access_checks' service instead.
858 url_generator.non_bubbling:
859 class: Drupal\Core\Routing\UrlGenerator
860 arguments: ['@router.route_provider', '@path_processor_manager', '@route_processor_manager', '@request_stack', '%filter_protocols%']
863 - [setContext, ['@?router.request_context']]
865 class: Drupal\Core\Render\MetadataBubblingUrlGenerator
866 arguments: ['@url_generator.non_bubbling', '@renderer']
868 - [setContext, ['@?router.request_context']]
869 redirect.destination:
870 class: Drupal\Core\Routing\RedirectDestination
871 arguments: ['@request_stack', '@url_generator']
872 unrouted_url_assembler:
873 class: Drupal\Core\Utility\UnroutedUrlAssembler
874 arguments: ['@request_stack', '@path_processor_manager', '%filter_protocols%']
876 class: Drupal\Core\Utility\LinkGenerator
877 arguments: ['@url_generator', '@module_handler', '@renderer']
879 class: Drupal\Core\Routing\AccessAwareRouter
880 arguments: ['@router.no_access_checks', '@access_manager', '@current_user']
882 class: Symfony\Cmf\Component\Routing\DynamicRouter
883 arguments: ['@router.request_context', '@router.matcher', '@url_generator']
885 - { name: service_collector, tag: non_lazy_route_enhancer, call: addRouteEnhancer }
886 deprecated: The "%service_id%" service is deprecated. You should use the 'router.no_access_checks' service instead.
887 router.no_access_checks:
888 class: \Drupal\Core\Routing\Router
889 arguments: ['@router.route_provider', '@path.current', '@url_generator']
891 # @todo Try to combine those tags together, see https://www.drupal.org/node/2915772.
892 - { name: service_collector, tag: non_lazy_route_enhancer, call: addRouteEnhancer }
893 - { name: service_collector, tag: route_enhancer, call: addRouteEnhancer }
894 - { name: service_collector, tag: non_lazy_route_filter, call: addRouteFilter }
895 - { name: service_collector, tag: route_filter, call: addRouteFilter }
897 - [setContext, ['@router.request_context']]
898 router.path_roots_subscriber:
899 class: Drupal\Core\EventSubscriber\PathRootsSubscriber
900 arguments: ['@state']
902 - { name: event_subscriber }
904 class: Drupal\Core\Entity\Query\QueryFactory
905 arguments: ['@entity.manager']
907 - [setContainer, ['@service_container']]
908 deprecated: The "%service_id%" service is deprecated. Use the 'entity_type.manager' service to get an entity type's storage object and then call \Drupal\Core\Entity\EntityStorageInterface::getQuery() or \Drupal\Core\Entity\EntityStorageInterface::getAggregateQuery() instead. See https://www.drupal.org/node/2849874
910 class: Drupal\Core\Config\Entity\Query\QueryFactory
911 arguments: ['@config.factory', '@keyvalue', '@config.manager']
913 - { name: event_subscriber }
915 class: Drupal\Core\Entity\Query\Sql\QueryFactory
916 arguments: ['@database']
918 - { name: backend_overridable }
919 pgsql.entity.query.sql:
920 class: Drupal\Core\Entity\Query\Sql\pgsql\QueryFactory
921 arguments: ['@database']
923 class: Drupal\Core\Entity\Query\Null\QueryFactory
924 entity.query.keyvalue:
925 class: Drupal\Core\Entity\KeyValueStore\Query\QueryFactory
926 arguments: ['@keyvalue']
928 class: Drupal\Core\Routing\MatcherDumper
929 arguments: ['@database', '@state']
931 - { name: backend_overridable }
934 class: Drupal\Core\Routing\RouteBuilder
935 arguments: ['@router.dumper', '@lock', '@event_dispatcher', '@module_handler', '@controller_resolver', '@access_manager.check_provider']
938 - { name: needs_destruction }
939 menu.rebuild_subscriber:
940 class: Drupal\Core\EventSubscriber\MenuRouterRebuildSubscriber
941 arguments: ['@lock', '@plugin.manager.menu.link']
943 - { name: event_subscriber }
945 class: Drupal\Core\Path\AliasStorage
946 arguments: ['@database', '@module_handler']
948 - { name: backend_overridable }
950 class: Drupal\Core\Path\PathMatcher
951 arguments: ['@config.factory', '@current_route_match']
953 class: Drupal\Core\Path\PathValidator
954 arguments: ['@router', '@router.no_access_checks', '@current_user', '@path_processor_manager']
956 # The argument to the hashing service defined in services.yml, to the
957 # constructor of PhpassHashedPassword is the log2 number of iterations for
958 # password stretching.
959 # @todo increase by 1 every Drupal version in order to counteract increases in
960 # the speed and power of computers available to crack the hashes. The current
961 # password hashing method was introduced in Drupal 7 with a log2 count of 15.
963 class: Drupal\Core\Password\PhpassHashedPassword
965 request_format_route_filter:
966 class: Drupal\Core\Routing\RequestFormatRouteFilter
968 - { name: route_filter }
970 class: Drupal\Core\Routing\MethodFilter
972 # The HTTP method route filter must run very early: it removes any routes
973 # whose requirements do not allow the HTTP method of the current request.
974 # Throws a 405 if no routes match the current request's HTTP method.
975 # (If it runs before content_type_header_matcher, it can ensure that only
976 # receives routes which can have a Content-Type request header.)
977 - { name: route_filter, priority: 10 }
978 content_type_header_matcher:
979 class: Drupal\Core\Routing\ContentTypeHeaderMatcher
981 # The Content-Type request header route filter must run early: it removes
982 # any routes whose requirements do not allow the Content-Type request
983 # header of the current request.
984 # Throws a 415 if no routes match the Content-Type request header of the
985 # current request, or if it has no Content-Type request header.
986 # Note it does nothing for GET requests.
987 - { name: route_filter, priority: 5 }
988 paramconverter_manager:
989 class: Drupal\Core\ParamConverter\ParamConverterManager
991 - { name: service_collector, tag: paramconverter, call: addConverter }
992 paramconverter_subscriber:
993 class: Drupal\Core\EventSubscriber\ParamConverterSubscriber
995 - { name: event_subscriber }
996 arguments: ['@paramconverter_manager']
997 paramconverter.entity:
998 class: Drupal\Core\ParamConverter\EntityConverter
1000 - { name: paramconverter }
1001 arguments: ['@entity.manager', '@language_manager']
1002 paramconverter.entity_revision:
1003 class: Drupal\Core\ParamConverter\EntityRevisionParamConverter
1005 - { name: paramconverter }
1006 arguments: ['@entity_type.manager', '@entity.repository']
1007 paramconverter.configentity_admin:
1008 class: Drupal\Core\ParamConverter\AdminPathConfigEntityConverter
1010 # Use a higher priority than EntityConverter, see the class for details.
1011 - { name: paramconverter, priority: 5 }
1012 arguments: ['@entity.manager', '@config.factory', '@router.admin_context']
1014 route_subscriber.module:
1015 class: Drupal\Core\EventSubscriber\ModuleRouteSubscriber
1017 - { name: event_subscriber }
1018 arguments: ['@module_handler']
1019 resolver_manager.entity:
1020 class: Drupal\Core\Entity\EntityResolverManager
1021 arguments: ['@entity.manager', '@class_resolver']
1022 route_subscriber.entity:
1023 class: Drupal\Core\EventSubscriber\EntityRouteAlterSubscriber
1025 - { name: event_subscriber }
1026 arguments: ['@resolver_manager.entity']
1027 ajax_response.subscriber:
1028 class: Drupal\Core\EventSubscriber\AjaxResponseSubscriber
1029 arguments: ['@ajax_response.attachments_processor']
1031 - { name: event_subscriber }
1032 form_ajax_subscriber:
1033 class: Drupal\Core\Form\EventSubscriber\FormAjaxSubscriber
1034 arguments: ['@form_ajax_response_builder', '@string_translation', '@messenger']
1036 - { name: event_subscriber }
1037 route_enhancer.param_conversion:
1038 class: Drupal\Core\Routing\Enhancer\ParamConversionEnhancer
1039 arguments: ['@paramconverter_manager']
1041 - { name: route_enhancer, priority: 5000 }
1042 - { name: event_subscriber }
1043 route_enhancer.form:
1044 class: Drupal\Core\Routing\Enhancer\FormRouteEnhancer
1046 - { name: route_enhancer }
1047 route_enhancer.entity:
1048 class: Drupal\Core\Entity\Enhancer\EntityRouteEnhancer
1050 - { name: route_enhancer, priority: 20 }
1051 route_enhancer.entity_revision:
1052 class: Drupal\Core\Routing\Enhancer\EntityRevisionRouteEnhancer
1054 - { name: route_enhancer }
1055 route_special_attributes_subscriber:
1056 class: Drupal\Core\EventSubscriber\SpecialAttributesRouteSubscriber
1058 - { name: event_subscriber }
1059 route_http_method_subscriber:
1060 class: Drupal\Core\EventSubscriber\RouteMethodSubscriber
1062 - { name: event_subscriber }
1063 psr_response_view_subscriber:
1064 class: Drupal\Core\EventSubscriber\PsrResponseSubscriber
1065 arguments: ['@psr7.http_foundation_factory']
1067 - { name: event_subscriber }
1069 # Main content view subscriber plus the renderers it uses.
1070 main_content_view_subscriber:
1071 class: Drupal\Core\EventSubscriber\MainContentViewSubscriber
1072 arguments: ['@class_resolver', '@current_route_match', '%main_content_renderers%']
1074 - { name: event_subscriber }
1076 class: Drupal\Core\EventSubscriber\RenderArrayNonHtmlSubscriber
1078 - { name: event_subscriber }
1079 main_content_renderer.html:
1080 class: Drupal\Core\Render\MainContent\HtmlRenderer
1081 arguments: ['@title_resolver', '@plugin.manager.display_variant', '@event_dispatcher', '@module_handler', '@renderer', '@render_cache', '%renderer.config%']
1083 - { name: render.main_content_renderer, format: html }
1084 main_content_renderer.ajax:
1085 class: Drupal\Core\Render\MainContent\AjaxRenderer
1086 arguments: ['@element_info']
1088 - { name: render.main_content_renderer, format: drupal_ajax }
1089 - { name: render.main_content_renderer, format: iframeupload }
1090 main_content_renderer.dialog:
1091 class: Drupal\Core\Render\MainContent\DialogRenderer
1092 arguments: ['@title_resolver']
1094 - { name: render.main_content_renderer, format: drupal_dialog }
1095 main_content_renderer.off_canvas:
1096 class: Drupal\Core\Render\MainContent\OffCanvasRenderer
1097 arguments: ['@title_resolver', '@renderer']
1099 - { name: render.main_content_renderer, format: drupal_dialog.off_canvas }
1100 main_content_renderer.off_canvas_top:
1101 class: Drupal\Core\Render\MainContent\OffCanvasRenderer
1102 arguments: ['@title_resolver', '@renderer', 'top']
1104 - { name: render.main_content_renderer, format: drupal_dialog.off_canvas_top }
1105 main_content_renderer.modal:
1106 class: Drupal\Core\Render\MainContent\ModalRenderer
1107 arguments: ['@title_resolver']
1109 - { name: render.main_content_renderer, format: drupal_modal }
1111 class: Drupal\Core\Controller\HtmlFormController
1112 arguments: ['@http_kernel.controller.argument_resolver', '@form_builder', '@class_resolver']
1113 controller.entity_form:
1114 class: Drupal\Core\Entity\HtmlEntityFormController
1115 arguments: ['@http_kernel.controller.argument_resolver', '@form_builder', '@entity.manager']
1116 form_ajax_response_builder:
1117 class: Drupal\Core\Form\FormAjaxResponseBuilder
1118 arguments: ['@main_content_renderer.ajax', '@current_route_match']
1120 class: Symfony\Component\HttpKernel\EventListener\RouterListener
1122 - { name: event_subscriber }
1123 arguments: ['@router', '@request_stack', '@router.request_context', NULL]
1124 options_request_listener:
1125 class: Drupal\Core\EventSubscriber\OptionsRequestSubscriber
1126 arguments: ['@router.route_provider']
1128 - { name: event_subscriber }
1129 bare_html_page_renderer:
1130 class: Drupal\Core\Render\BareHtmlPageRenderer
1131 arguments: ['@renderer', '@html_response.attachments_processor']
1134 class: Drupal\Core\PrivateKey
1135 arguments: ['@state']
1137 class: Drupal\Core\Access\CsrfTokenGenerator
1138 arguments: ['@private_key', '@session_manager.metadata_bag']
1139 access_arguments_resolver_factory:
1140 class: Drupal\Core\Access\AccessArgumentsResolverFactory
1142 class: Drupal\Core\Access\AccessManager
1143 arguments: ['@router.route_provider', '@paramconverter_manager', '@access_arguments_resolver_factory', '@current_user', '@access_manager.check_provider']
1144 access_manager.check_provider:
1145 class: Drupal\Core\Access\CheckProvider
1147 - [setContainer, ['@service_container']]
1149 access_check.default:
1150 class: Drupal\Core\Access\DefaultAccessCheck
1152 - { name: access_check, applies_to: _access }
1153 access_check.entity:
1154 class: Drupal\Core\Entity\EntityAccessCheck
1156 - { name: access_check, applies_to: _entity_access }
1157 access_check.entity_create:
1158 class: Drupal\Core\Entity\EntityCreateAccessCheck
1159 arguments: ['@entity.manager']
1161 - { name: access_check, applies_to: _entity_create_access }
1162 access_check.entity_create_any:
1163 class: Drupal\Core\Entity\EntityCreateAnyAccessCheck
1164 arguments: ['@entity_type.manager', '@entity_type.bundle.info']
1166 - { name: access_check, applies_to: _entity_create_any_access }
1167 access_check.entity_delete_multiple:
1168 class: Drupal\Core\Entity\EntityDeleteMultipleAccessCheck
1169 arguments: ['@entity_type.manager', '@tempstore.private', '@request_stack']
1171 - { name: access_check, applies_to: _entity_delete_multiple_access }
1173 class: Drupal\Core\Theme\ThemeAccessCheck
1174 arguments: ['@theme_handler']
1176 - { name: access_check, applies_to: _access_theme }
1177 access_check.custom:
1178 class: Drupal\Core\Access\CustomAccessCheck
1179 arguments: ['@controller_resolver', '@access_arguments_resolver_factory']
1181 - { name: access_check, applies_to: _custom_access }
1183 class: Drupal\Core\Access\CsrfAccessCheck
1185 - { name: access_check, applies_to: _csrf_token, needs_incoming_request: TRUE }
1186 arguments: ['@csrf_token']
1187 access_check.header.csrf:
1188 class: Drupal\Core\Access\CsrfRequestHeaderAccessCheck
1189 arguments: ['@session_configuration', '@csrf_token']
1191 - { name: access_check, needs_incoming_request: TRUE }
1193 class: Drupal\Core\Site\MaintenanceMode
1194 arguments: ['@state', '@current_user']
1195 maintenance_mode_subscriber:
1196 class: Drupal\Core\EventSubscriber\MaintenanceModeSubscriber
1197 arguments: ['@maintenance_mode', '@config.factory', '@string_translation', '@url_generator', '@current_user', '@bare_html_page_renderer', '@messenger']
1199 - { name: event_subscriber }
1201 class: Drupal\Core\EventSubscriber\PathSubscriber
1203 - { name: event_subscriber }
1204 arguments: ['@path.alias_manager', '@path.current']
1205 route_access_response_subscriber:
1206 class: Drupal\Core\EventSubscriber\RouteAccessResponseSubscriber
1208 - { name: event_subscriber }
1209 client_error_response_subscriber:
1210 class: Drupal\Core\EventSubscriber\ClientErrorResponseSubscriber
1212 - { name: event_subscriber }
1213 anonymous_user_response_subscriber:
1214 class: Drupal\Core\EventSubscriber\AnonymousUserResponseSubscriber
1216 - { name: event_subscriber }
1217 arguments: ['@current_user']
1218 ajax_response.attachments_processor:
1219 class: Drupal\Core\Ajax\AjaxResponseAttachmentsProcessor
1221 arguments: ['@asset.resolver', '@config.factory', '@asset.css.collection_renderer', '@asset.js.collection_renderer', '@request_stack', '@renderer', '@module_handler']
1222 html_response.attachments_processor:
1223 class: Drupal\Core\Render\HtmlResponseAttachmentsProcessor
1225 arguments: ['@asset.resolver', '@config.factory', '@asset.css.collection_renderer', '@asset.js.collection_renderer', '@request_stack', '@renderer', '@module_handler']
1226 html_response.subscriber:
1227 class: Drupal\Core\EventSubscriber\HtmlResponseSubscriber
1229 - { name: event_subscriber }
1230 arguments: ['@html_response.attachments_processor']
1231 finish_response_subscriber:
1232 class: Drupal\Core\EventSubscriber\FinishResponseSubscriber
1234 - { name: event_subscriber }
1235 arguments: ['@language_manager', '@config.factory', '@page_cache_request_policy', '@page_cache_response_policy', '@cache_contexts_manager', '%http.response.debug_cacheability_headers%']
1236 response_generator_subscriber:
1237 class: Drupal\Core\EventSubscriber\ResponseGeneratorSubscriber
1239 - { name: event_subscriber }
1240 redirect_response_subscriber:
1241 class: Drupal\Core\EventSubscriber\RedirectResponseSubscriber
1242 arguments: ['@unrouted_url_assembler', '@router.request_context']
1244 - { name: event_subscriber }
1245 redirect_leading_slashes_subscriber:
1246 class: Drupal\Core\EventSubscriber\RedirectLeadingSlashesSubscriber
1248 - { name: event_subscriber }
1249 request_close_subscriber:
1250 class: Drupal\Core\EventSubscriber\RequestCloseSubscriber
1252 - { name: event_subscriber }
1253 arguments: ['@module_handler']
1254 config_import_subscriber:
1255 class: Drupal\Core\EventSubscriber\ConfigImportSubscriber
1257 - { name: event_subscriber }
1258 arguments: ['@theme_handler']
1259 config_snapshot_subscriber:
1260 class: Drupal\Core\EventSubscriber\ConfigSnapshotSubscriber
1262 - { name: event_subscriber }
1263 arguments: ['@config.manager', '@config.storage', '@config.storage.snapshot']
1264 exception.needs_installer:
1265 class: Drupal\Core\EventSubscriber\ExceptionDetectNeedsInstallSubscriber
1266 arguments: ['@database']
1268 - { name: event_subscriber }
1269 exception.default_json:
1270 class: Drupal\Core\EventSubscriber\ExceptionJsonSubscriber
1272 - { name: event_subscriber }
1273 exception.default_html:
1274 class: Drupal\Core\EventSubscriber\DefaultExceptionHtmlSubscriber
1276 - { name: event_subscriber }
1277 arguments: ['@http_kernel', '@logger.channel.php', '@redirect.destination', '@router.no_access_checks']
1279 class: Drupal\Core\EventSubscriber\FinalExceptionSubscriber
1281 - { name: event_subscriber }
1282 arguments: ['@config.factory']
1284 class: Drupal\Core\EventSubscriber\ExceptionLoggingSubscriber
1286 - { name: event_subscriber }
1287 arguments: ['@logger.factory']
1288 exception.custom_page_html:
1289 class: Drupal\Core\EventSubscriber\CustomPageExceptionHtmlSubscriber
1291 - { name: event_subscriber }
1292 arguments: ['@config.factory', '@http_kernel', '@logger.channel.php', '@redirect.destination', '@router.no_access_checks', '@access_manager']
1293 exception.fast_404_html:
1294 class: Drupal\Core\EventSubscriber\Fast404ExceptionHtmlSubscriber
1296 - { name: event_subscriber }
1297 arguments: ['@config.factory', '@http_kernel']
1298 exception.test_site:
1299 class: Drupal\Core\EventSubscriber\ExceptionTestSiteSubscriber
1301 - { name: event_subscriber }
1302 exception.enforced_form_response:
1303 class: Drupal\Core\EventSubscriber\EnforcedFormResponseSubscriber
1305 - { name: event_subscriber }
1306 route_processor_manager:
1307 class: Drupal\Core\RouteProcessor\RouteProcessorManager
1309 - { name: service_collector, tag: route_processor_outbound, call: addOutbound }
1310 path_processor_manager:
1311 class: Drupal\Core\PathProcessor\PathProcessorManager
1313 - { name: service_collector, tag: path_processor_inbound, call: addInbound }
1314 - { name: service_collector, tag: path_processor_outbound, call: addOutbound }
1315 path_processor_decode:
1316 class: Drupal\Core\PathProcessor\PathProcessorDecode
1318 - { name: path_processor_inbound, priority: 1000 }
1319 path_processor_front:
1320 class: Drupal\Core\PathProcessor\PathProcessorFront
1322 - { name: path_processor_inbound, priority: 200 }
1323 - { name: path_processor_outbound, priority: 200 }
1324 arguments: ['@config.factory']
1325 route_processor_current:
1326 class: Drupal\Core\RouteProcessor\RouteProcessorCurrent
1327 arguments: ['@current_route_match']
1329 - { name: route_processor_outbound, priority: 200 }
1330 path_processor_alias:
1331 class: Drupal\Core\PathProcessor\PathProcessorAlias
1333 - { name: path_processor_inbound, priority: 100 }
1334 - { name: path_processor_outbound, priority: 300 }
1335 arguments: ['@path.alias_manager']
1336 route_processor_csrf:
1337 class: Drupal\Core\Access\RouteProcessorCsrf
1339 - { name: route_processor_outbound }
1340 arguments: ['@csrf_token']
1342 class: Drupal\Core\Transliteration\PhpTransliteration
1343 arguments: [null, '@module_handler']
1345 class: Drupal\Core\Flood\DatabaseBackend
1346 arguments: ['@database', '@request_stack']
1348 - { name: backend_overridable }
1349 plugin.manager.mail:
1350 class: Drupal\Core\Mail\MailManager
1351 arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@config.factory', '@logger.factory', '@string_translation', '@renderer']
1352 plugin.manager.condition:
1353 class: Drupal\Core\Condition\ConditionManager
1354 parent: default_plugin_manager
1355 plugin.manager.element_info:
1356 class: Drupal\Core\Render\ElementInfoManager
1357 arguments: ['@container.namespaces', '@cache.discovery', '@cache_tags.invalidator', '@module_handler', '@theme.manager']
1358 stream_wrapper_manager:
1359 class: Drupal\Core\StreamWrapper\StreamWrapperManager
1361 - [setContainer, ['@service_container']]
1362 stream_wrapper.public:
1363 class: Drupal\Core\StreamWrapper\PublicStream
1365 - { name: stream_wrapper, scheme: public }
1366 stream_wrapper.temporary:
1367 class: Drupal\Core\StreamWrapper\TemporaryStream
1369 - { name: stream_wrapper, scheme: temporary }
1370 kernel_destruct_subscriber:
1371 class: Drupal\Core\EventSubscriber\KernelDestructionSubscriber
1373 - { name: event_subscriber }
1375 - [setContainer, ['@service_container']]
1376 image.toolkit.manager:
1377 class: Drupal\Core\ImageToolkit\ImageToolkitManager
1378 arguments: ['@config.factory']
1379 parent: default_plugin_manager
1381 - { name: plugin_manager_cache_clear }
1382 image.toolkit.operation.manager:
1383 class: Drupal\Core\ImageToolkit\ImageToolkitOperationManager
1384 arguments: ['@logger.channel.image', '@image.toolkit.manager']
1385 parent: default_plugin_manager
1387 - { name: plugin_manager_cache_clear }
1389 class: Drupal\Core\Image\ImageFactory
1390 arguments: ['@image.toolkit.manager']
1392 class: Drupal\Core\Breadcrumb\BreadcrumbManager
1393 arguments: ['@module_handler']
1395 - { name: service_collector, tag: breadcrumb_builder, call: addBuilder }
1397 class: Drupal\Core\Utility\Token
1398 arguments: ['@module_handler', '@cache.default', '@language_manager', '@cache_tags.invalidator', '@renderer']
1400 class: Drupal\Core\Batch\BatchStorage
1401 arguments: ['@database', '@session', '@csrf_token']
1403 - { name: backend_overridable }
1405 replica_database_ignore__subscriber:
1406 class: Drupal\Core\EventSubscriber\ReplicaDatabaseIgnoreSubscriber
1408 - {name: event_subscriber}
1410 class: Drupal\Core\Locale\CountryManager
1411 arguments: ['@module_handler']
1413 class: Drupal\Core\Datetime\DateFormatter
1414 arguments: ['@entity.manager', '@language_manager', '@string_translation', '@config.factory', '@request_stack']
1416 class: Drupal\Component\Bridge\ZfExtensionManagerSfContainer
1418 - [setContainer, ['@service_container']]
1419 - [setStandalone, ['\Zend\Feed\Reader\StandaloneExtensionManager']]
1420 arguments: ['feed.reader.']
1422 class: Drupal\Component\Bridge\ZfExtensionManagerSfContainer
1424 - [setContainer, ['@service_container']]
1425 - [setStandalone, ['\Zend\Feed\Writer\StandaloneExtensionManager']]
1426 arguments: ['feed.writer.']
1427 # Zend Feed reader plugins. Plugin instances should not be shared.
1428 feed.reader.dublincoreentry:
1429 class: Zend\Feed\Reader\Extension\DublinCore\Entry
1431 feed.reader.dublincorefeed:
1432 class: Zend\Feed\Reader\Extension\DublinCore\Feed
1434 feed.reader.contententry:
1435 class: Zend\Feed\Reader\Extension\Content\Entry
1437 feed.reader.atomentry:
1438 class: Zend\Feed\Reader\Extension\Atom\Entry
1440 feed.reader.atomfeed:
1441 class: Zend\Feed\Reader\Extension\Atom\Feed
1443 feed.reader.slashentry:
1444 class: Zend\Feed\Reader\Extension\Slash\Entry
1446 feed.reader.wellformedwebentry:
1447 class: Zend\Feed\Reader\Extension\WellFormedWeb\Entry
1449 feed.reader.threadentry:
1450 class: Zend\Feed\Reader\Extension\Thread\Entry
1452 feed.reader.podcastentry:
1453 class: Zend\Feed\Reader\Extension\Podcast\Entry
1455 feed.reader.podcastfeed:
1456 class: Zend\Feed\Reader\Extension\Podcast\Feed
1458 # Zend Feed writer plugins. Plugins should be set as prototype scope.
1459 feed.writer.atomrendererfeed:
1460 class: Zend\Feed\Writer\Extension\Atom\Renderer\Feed
1462 feed.writer.contentrendererentry:
1463 class: Zend\Feed\Writer\Extension\Content\Renderer\Entry
1465 feed.writer.dublincorerendererentry:
1466 class: Zend\Feed\Writer\Extension\DublinCore\Renderer\Entry
1468 feed.writer.dublincorerendererfeed:
1469 class: Zend\Feed\Writer\Extension\DublinCore\Renderer\Feed
1471 feed.writer.itunesentry:
1472 class: Zend\Feed\Writer\Extension\ITunes\Entry
1474 feed.writer.itunesfeed:
1475 class: Zend\Feed\Writer\Extension\ITunes\Feed
1477 feed.writer.itunesrendererentry:
1478 class: Zend\Feed\Writer\Extension\ITunes\Renderer\Entry
1480 feed.writer.itunesrendererfeed:
1481 class: Zend\Feed\Writer\Extension\ITunes\Renderer\Feed
1483 feed.writer.slashrendererentry:
1484 class: Zend\Feed\Writer\Extension\Slash\Renderer\Entry
1486 feed.writer.threadingrendererentry:
1487 class: Zend\Feed\Writer\Extension\Threading\Renderer\Entry
1489 feed.writer.wellformedwebrendererentry:
1490 class: Zend\Feed\Writer\Extension\WellFormedWeb\Renderer\Entry
1493 class: Drupal\Core\Theme\ThemeManager
1494 arguments: ['@app.root', '@theme.negotiator', '@theme.initialization', '@module_handler']
1496 - [setThemeRegistry, ['@theme.registry']]
1497 theme.initialization:
1498 class: Drupal\Core\Theme\ThemeInitialization
1499 arguments: ['@app.root', '@theme_handler', '@cache.bootstrap', '@module_handler']
1501 class: Drupal\Core\Theme\Registry
1502 arguments: ['@app.root', '@cache.default', '@lock', '@module_handler', '@theme_handler', '@theme.initialization', null, '@cache.bootstrap']
1504 - { name: needs_destruction }
1506 - [setThemeManager, ['@theme.manager']]
1508 class: Drupal\Core\Authentication\AuthenticationManager
1509 arguments: ['@authentication_collector']
1510 authentication_collector:
1511 class: Drupal\Core\Authentication\AuthenticationCollector
1513 - { name: service_collector, tag: authentication_provider, call: addProvider }
1514 authentication_subscriber:
1515 class: Drupal\Core\EventSubscriber\AuthenticationSubscriber
1516 arguments: ['@authentication', '@current_user']
1518 - { name: event_subscriber }
1520 class: Drupal\Core\Session\AccountSwitcher
1521 arguments: ['@current_user', '@session_handler.write_safe']
1522 user_permissions_hash_generator:
1523 class: Drupal\Core\Session\PermissionsHashGenerator
1524 arguments: ['@private_key', '@cache.bootstrap', '@cache.static']
1526 class: Drupal\Core\Session\AccountProxy
1527 session_configuration:
1528 class: Drupal\Core\Session\SessionConfiguration
1529 arguments: ['%session.storage.options%']
1531 class: Symfony\Component\HttpFoundation\Session\Session
1532 arguments: ['@session_manager', '@session.attribute_bag', '@session.flash_bag']
1534 class: Symfony\Component\HttpFoundation\Session\Flash\FlashBag
1536 session.attribute_bag:
1537 class: Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag
1540 alias: session_handler.storage
1541 session_handler.storage:
1542 class: Drupal\Core\Session\SessionHandler
1543 arguments: ['@request_stack', '@database']
1545 - { name: backend_overridable }
1546 session_handler.write_check:
1547 class: Symfony\Component\HttpFoundation\Session\Storage\Handler\WriteCheckSessionHandler
1549 - { name: session_handler_proxy, priority: 100 }
1550 session_handler.write_safe:
1551 class: Drupal\Core\Session\WriteSafeSessionHandler
1553 - { name: session_handler_proxy, priority: 150 }
1555 class: Drupal\Core\Session\SessionManager
1556 arguments: ['@request_stack', '@database', '@session_manager.metadata_bag', '@session_configuration', '@session_handler']
1558 - { name: backend_overridable }
1560 - [setWriteSafeHandler, ['@session_handler.write_safe']]
1561 session_manager.metadata_bag:
1562 class: Drupal\Core\Session\MetadataBag
1563 arguments: ['@settings']
1564 asset.css.collection_renderer:
1565 class: Drupal\Core\Asset\CssCollectionRenderer
1566 arguments: [ '@state' ]
1567 asset.css.collection_optimizer:
1568 class: Drupal\Core\Asset\CssCollectionOptimizer
1569 arguments: [ '@asset.css.collection_grouper', '@asset.css.optimizer', '@asset.css.dumper', '@state' ]
1570 asset.css.optimizer:
1571 class: Drupal\Core\Asset\CssOptimizer
1572 asset.css.collection_grouper:
1573 class: Drupal\Core\Asset\CssCollectionGrouper
1575 class: Drupal\Core\Asset\AssetDumper
1576 asset.js.collection_renderer:
1577 class: Drupal\Core\Asset\JsCollectionRenderer
1578 arguments: [ '@state' ]
1579 asset.js.collection_optimizer:
1580 class: Drupal\Core\Asset\JsCollectionOptimizer
1581 arguments: [ '@asset.js.collection_grouper', '@asset.js.optimizer', '@asset.js.dumper', '@state' ]
1583 class: Drupal\Core\Asset\JsOptimizer
1584 asset.js.collection_grouper:
1585 class: Drupal\Core\Asset\JsCollectionGrouper
1587 class: Drupal\Core\Asset\AssetDumper
1589 class: Drupal\Core\Asset\LibraryDiscovery
1590 arguments: ['@library.discovery.collector']
1591 library.discovery.collector:
1592 class: Drupal\Core\Asset\LibraryDiscoveryCollector
1593 arguments: ['@cache.discovery', '@lock', '@library.discovery.parser', '@theme.manager']
1595 - { name: needs_destruction }
1596 library.discovery.parser:
1597 class: Drupal\Core\Asset\LibraryDiscoveryParser
1598 arguments: ['@app.root', '@module_handler', '@theme.manager']
1599 library.dependency_resolver:
1600 class: Drupal\Core\Asset\LibraryDependencyResolver
1601 arguments: ['@library.discovery']
1603 class: Drupal\Core\Asset\AssetResolver
1604 arguments: ['@library.discovery', '@library.dependency_resolver', '@module_handler', '@theme.manager', '@language_manager', '@cache.data']
1606 class: Drupal\Core\Extension\InfoParser
1608 class: Drupal\Core\Template\TwigEnvironment
1609 arguments: ['@app.root', '@cache.default', '%twig_extension_hash%', '@state', '@twig.loader', '%twig.config%']
1611 - { name: service_collector, tag: 'twig.extension', call: addExtension }
1613 class: Drupal\Core\Template\TwigExtension
1614 arguments: ['@renderer', '@url_generator', '@theme.manager', '@date.formatter']
1616 - { name: twig.extension, priority: 100 }
1617 # @todo Figure out what to do about debugging functions.
1618 # @see https://www.drupal.org/node/1804998
1619 twig.extension.debug:
1620 class: Twig_Extension_Debug
1622 - { name: twig.extension }
1624 class: Twig_Loader_Chain
1627 - { name: service_collector, tag: twig.loader, call: addLoader, required: TRUE }
1628 twig.loader.filesystem:
1629 class: Drupal\Core\Template\Loader\FilesystemLoader
1630 # We use '.' instead of '@app.root' as the path for non-namespaced template
1631 # files so that they match the relative paths of templates loaded via the
1632 # theme registry or via Twig namespaces.
1633 arguments: ['.', '@module_handler', '@theme_handler']
1635 - { name: twig.loader, priority: 100 }
1636 twig.loader.theme_registry:
1637 class: Drupal\Core\Template\Loader\ThemeRegistryLoader
1638 arguments: ['@theme.registry']
1640 - { name: twig.loader, priority: 0 }
1642 class: Drupal\Core\Template\Loader\StringLoader
1644 - { name: twig.loader, priority: -100 }
1646 alias: plugin.manager.element_info
1647 file.mime_type.guesser:
1648 class: Drupal\Core\File\MimeType\MimeTypeGuesser
1649 arguments: ['@stream_wrapper_manager']
1651 - { name: service_collector, tag: mime_type_guesser, call: addGuesser }
1653 file.mime_type.guesser.extension:
1654 class: Drupal\Core\File\MimeType\ExtensionMimeTypeGuesser
1655 arguments: ['@module_handler']
1657 - { name: mime_type_guesser }
1659 # Currently needs to be public as it is called by
1660 # \Drupal\Core\Render\Element\StatusMessages.
1661 # @todo Consider making this service private again after
1662 # https://www.drupal.org/node/2367555 lands.
1663 render_placeholder_generator:
1664 class: Drupal\Core\Render\PlaceholderGenerator
1665 arguments: ['%renderer.config%']
1667 class: Drupal\Core\Render\PlaceholderingRenderCache
1668 arguments: ['@request_stack', '@cache_factory', '@cache_contexts_manager', '@render_placeholder_generator']
1670 class: Drupal\Core\Render\Renderer
1671 arguments: ['@controller_resolver', '@theme.manager', '@plugin.manager.element_info', '@render_placeholder_generator', '@render_cache', '@request_stack', '%renderer.config%']
1672 early_rendering_controller_wrapper_subscriber:
1673 class: Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber
1674 arguments: ['@http_kernel.controller.argument_resolver', '@renderer']
1676 - { name: event_subscriber }
1677 # Placeholder strategies for rendering placeholders.
1678 html_response.placeholder_strategy_subscriber:
1679 class: Drupal\Core\EventSubscriber\HtmlResponsePlaceholderStrategySubscriber
1681 - { name: event_subscriber }
1682 arguments: ['@placeholder_strategy']
1683 placeholder_strategy:
1684 class: Drupal\Core\Render\Placeholder\ChainedPlaceholderStrategy
1686 - { name: service_collector, tag: placeholder_strategy, call: addPlaceholderStrategy }
1687 placeholder_strategy.single_flush:
1688 class: Drupal\Core\Render\Placeholder\SingleFlushStrategy
1690 - { name: placeholder_strategy, priority: -1000 }
1692 class: Egulias\EmailValidator\EmailValidator
1693 update.post_update_registry:
1694 class: Drupal\Core\Update\UpdateRegistry
1695 factory: ['@update.post_update_registry_factory', create]
1696 update.post_update_registry_factory:
1697 class: Drupal\Core\Update\UpdateRegistryFactory
1698 parent: container.trait
1700 class: Drupal\Component\Uuid\Php
1701 response_filter.active_link:
1702 class: Drupal\Core\EventSubscriber\ActiveLinkResponseFilter
1703 arguments: ['@current_user', '@path.current', '@path.matcher', '@language_manager']
1705 - { name: event_subscriber }
1706 response_filter.rss.relative_url:
1707 class: Drupal\Core\EventSubscriber\RssResponseRelativeUrlFilter
1709 - { name: event_subscriber }
1711 class: Drupal\Core\Messenger\Messenger
1712 arguments: ['@session.flash_bag', '@page_cache_kill_switch']
1714 class: Drupal\Core\TempStore\PrivateTempStoreFactory
1715 arguments: ['@keyvalue.expirable', '@lock', '@current_user', '@request_stack', '%tempstore.expire%']
1717 - { name: backend_overridable }
1719 class: Drupal\Core\TempStore\SharedTempStoreFactory
1720 arguments: ['@keyvalue.expirable', '@lock', '@request_stack', '%tempstore.expire%']
1722 - { name: backend_overridable }