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', '@cache.bootstrap', '@lock']
436 - { name: needs_destruction }
438 class: Drupal\Core\Queue\QueueFactory
439 arguments: ['@settings']
441 - [setContainer, ['@service_container']]
443 class: Drupal\Core\Queue\QueueDatabaseFactory
444 arguments: ['@database']
445 path.alias_whitelist:
446 class: Drupal\Core\Path\AliasWhitelist
448 - { name: needs_destruction }
449 arguments: [path_alias_whitelist, '@cache.bootstrap', '@lock', '@state', '@path.alias_storage']
451 class: Drupal\Core\Path\AliasManager
452 arguments: ['@path.alias_storage', '@path.alias_whitelist', '@language_manager', '@cache.data']
454 class: Drupal\Core\Path\CurrentPathStack
455 arguments: ['@request_stack']
457 class: GuzzleHttp\HandlerStack
459 factory: GuzzleHttp\HandlerStack::create
460 configurator: ['@http_handler_stack_configurator', configure]
461 http_handler_stack_configurator:
462 class: Drupal\Core\Http\HandlerStackConfigurator
464 arguments: ['@service_container']
466 class: GuzzleHttp\Client
467 factory: http_client_factory:fromOptions
469 class: Drupal\Core\Http\ClientFactory
470 arguments: ['@http_handler_stack']
471 plugin.manager.link_relation_type:
472 class: \Drupal\Core\Http\LinkRelationTypeManager
473 arguments: ['@app.root', '@module_handler', '@cache.discovery']
475 class: Drupal\Core\Theme\ThemeNegotiator
476 arguments: ['@access_check.theme', '@class_resolver']
478 - { name: service_id_collector, tag: theme_negotiator }
479 theme.negotiator.default:
480 class: Drupal\Core\Theme\DefaultNegotiator
481 arguments: ['@config.factory']
483 - { name: theme_negotiator, priority: -100 }
484 theme.negotiator.ajax_base_page:
485 class: Drupal\Core\Theme\AjaxBasePageNegotiator
486 arguments: ['@csrf_token', '@config.factory', '@request_stack']
488 - { name: theme_negotiator, priority: 1000 }
489 container.namespaces:
491 arguments: [ '%container.namespaces%' ]
495 - [setContainer, ['@service_container']]
496 default_plugin_manager:
498 arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
500 class: Drupal\Core\Extension\ModuleHandler
501 arguments: ['@app.root', '%container.modules%', '@cache.bootstrap']
503 class: Drupal\Core\Extension\ModuleInstaller
505 - { name: service_collector, tag: 'module_install.uninstall_validator', call: addUninstallValidator }
506 arguments: ['@app.root', '@module_handler', '@kernel', '@router.builder']
508 content_uninstall_validator:
509 class: Drupal\Core\Entity\ContentUninstallValidator
511 - { name: module_install.uninstall_validator }
512 arguments: ['@entity.manager', '@string_translation']
514 required_module_uninstall_validator:
515 class: Drupal\Core\Extension\RequiredModuleUninstallValidator
517 - { name: module_install.uninstall_validator }
518 arguments: ['@string_translation']
521 class: Drupal\Core\Extension\ThemeHandler
522 arguments: ['@app.root', '@config.factory', '@module_handler', '@state', '@info_parser']
524 class: Drupal\Core\Extension\ThemeInstaller
525 arguments: ['@theme_handler', '@config.factory', '@config.installer', '@module_handler', '@config.manager', '@asset.css.collection_optimizer', '@router.builder', '@logger.channel.default', '@state']
526 # @deprecated in Drupal 8.0.x and will be removed before 9.0.0. Use the other
527 # entity* services instead.
529 # We cannot set the deprecated property here because many test cases still
530 # rely on this service and they would fail with deprecation warnings.
531 class: Drupal\Core\Entity\EntityManager
532 parent: container.trait
533 # @todo Remove this tag in https://www.drupal.org/node/2549143.
535 - { name: plugin_manager_cache_clear }
537 class: Drupal\Core\Entity\EntityTypeManager
538 arguments: ['@container.namespaces', '@module_handler', '@cache.discovery', '@string_translation', '@class_resolver']
539 parent: container.trait
541 - { name: plugin_manager_cache_clear }
542 entity_type.repository:
543 class: Drupal\Core\Entity\EntityTypeRepository
544 arguments: ['@entity_type.manager']
545 entity_type.bundle.info:
546 class: Drupal\Core\Entity\EntityTypeBundleInfo
547 arguments: ['@entity_type.manager', '@language_manager', '@module_handler', '@typed_data_manager', '@cache.discovery']
549 class: Drupal\Core\Entity\EntityRepository
550 arguments: ['@entity_type.manager', '@language_manager']
551 entity_display.repository:
552 class: Drupal\Core\Entity\EntityDisplayRepository
553 arguments: ['@entity_type.manager', '@module_handler', '@cache.discovery', '@language_manager']
554 entity_field.manager:
555 class: Drupal\Core\Entity\EntityFieldManager
556 arguments: ['@entity_type.manager', '@entity_type.bundle.info', '@entity_display.repository', '@typed_data_manager', '@language_manager', '@keyvalue', '@module_handler', '@cache.discovery']
557 entity_type.listener:
558 class: Drupal\Core\Entity\EntityTypeListener
559 arguments: ['@entity_type.manager', '@entity_field.manager', '@event_dispatcher', '@entity.last_installed_schema.repository']
560 entity_bundle.listener:
561 class: Drupal\Core\Entity\EntityBundleListener
562 arguments: ['@entity_type.manager', '@entity_type.bundle.info', '@entity_field.manager', '@module_handler']
563 entity_route_subscriber:
564 class: Drupal\Core\EventSubscriber\EntityRouteProviderSubscriber
565 arguments: ['@entity.manager']
567 - { name: event_subscriber }
568 entity.definition_update_manager:
569 class: Drupal\Core\Entity\EntityDefinitionUpdateManager
570 arguments: ['@entity.manager']
571 entity.last_installed_schema.repository:
572 class: Drupal\Core\Entity\EntityLastInstalledSchemaRepository
573 arguments: ['@keyvalue']
574 entity_field.deleted_fields_repository:
575 class: Drupal\Core\Field\DeletedFieldsRepository
576 arguments: ['@state']
577 field_storage_definition.listener:
578 class: Drupal\Core\Field\FieldStorageDefinitionListener
579 arguments: ['@entity_type.manager', '@event_dispatcher', '@entity.last_installed_schema.repository', '@entity_field.manager', '@entity_field.deleted_fields_repository']
580 field_definition.listener:
581 class: Drupal\Core\Field\FieldDefinitionListener
582 arguments: ['@entity_type.manager', '@entity_field.manager', '@keyvalue', '@cache.discovery']
584 class: Drupal\Core\Entity\EntityFormBuilder
585 arguments: ['@entity.manager', '@form_builder']
586 entity.bundle_config_import_validator:
587 class: Drupal\Core\Entity\Event\BundleConfigImportValidate
588 arguments: ['@config.manager', '@entity.manager']
590 - { name: event_subscriber }
591 entity.autocomplete_matcher:
592 class: Drupal\Core\Entity\EntityAutocompleteMatcher
593 arguments: ['@plugin.manager.entity_reference_selection']
595 class: Drupal\Core\Plugin\PluginFormFactory
596 arguments: ['@class_resolver']
597 plugin.manager.entity_reference_selection:
598 class: Drupal\Core\Entity\EntityReferenceSelection\SelectionPluginManager
599 parent: default_plugin_manager
600 plugin.manager.block:
601 class: Drupal\Core\Block\BlockManager
602 parent: default_plugin_manager
603 plugin.manager.field.field_type:
604 class: Drupal\Core\Field\FieldTypePluginManager
605 arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@typed_data_manager']
606 plugin.manager.field.widget:
607 class: Drupal\Core\Field\WidgetPluginManager
608 arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@plugin.manager.field.field_type']
609 plugin.manager.field.formatter:
610 class: Drupal\Core\Field\FormatterPluginManager
611 arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@plugin.manager.field.field_type']
612 plugin.manager.archiver:
613 class: Drupal\Core\Archiver\ArchiverManager
614 parent: default_plugin_manager
615 plugin.manager.action:
616 class: Drupal\Core\Action\ActionManager
617 arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
618 plugin.manager.menu.link:
619 class: Drupal\Core\Menu\MenuLinkManager
620 arguments: ['@menu.tree_storage', '@menu_link.static.overrides', '@module_handler']
622 class: Drupal\Core\Menu\MenuLinkTree
623 arguments: ['@menu.tree_storage', '@plugin.manager.menu.link', '@router.route_provider', '@menu.active_trail', '@controller_resolver']
624 menu.default_tree_manipulators:
625 class: Drupal\Core\Menu\DefaultMenuLinkTreeManipulators
626 arguments: ['@access_manager', '@current_user', '@entity_type.manager']
628 class: Drupal\Core\Menu\MenuActiveTrail
629 arguments: ['@plugin.manager.menu.link', '@current_route_match', '@cache.menu', '@lock']
631 - { name: needs_destruction }
632 menu.parent_form_selector:
633 class: Drupal\Core\Menu\MenuParentFormSelector
634 arguments: ['@menu.link_tree', '@entity.manager', '@string_translation']
635 plugin.manager.menu.local_action:
636 class: Drupal\Core\Menu\LocalActionManager
637 arguments: ['@controller_resolver', '@request_stack', '@current_route_match', '@router.route_provider', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user']
638 plugin.manager.menu.local_task:
639 class: Drupal\Core\Menu\LocalTaskManager
640 arguments: ['@controller_resolver', '@request_stack', '@current_route_match', '@router.route_provider', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user']
641 plugin.manager.menu.contextual_link:
642 class: Drupal\Core\Menu\ContextualLinkManager
643 arguments: ['@controller_resolver', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user', '@request_stack']
644 plugin.manager.display_variant:
645 class: Drupal\Core\Display\VariantManager
646 parent: default_plugin_manager
647 plugin.manager.queue_worker:
648 class: Drupal\Core\Queue\QueueWorkerManager
649 parent: default_plugin_manager
650 plugin.cache_clearer:
651 class: Drupal\Core\Plugin\CachedDiscoveryClearer
653 paramconverter.menu_link:
654 class: Drupal\Core\ParamConverter\MenuLinkPluginConverter
656 - { name: paramconverter }
657 arguments: ['@plugin.manager.menu.link']
660 class: Drupal\Core\Menu\MenuTreeStorage
661 arguments: ['@database', '@cache.menu', '@cache_tags.invalidator', 'menu_tree']
662 public: false # Private to plugin.manager.menu.link and menu.link_tree
664 - { name: backend_overridable }
665 menu_link.static.overrides:
666 class: Drupal\Core\Menu\StaticMenuLinkOverrides
667 arguments: ['@config.factory']
669 class: Symfony\Component\HttpFoundation\RequestStack
673 class: Drupal\Core\Routing\CurrentRouteMatch
674 arguments: ['@request_stack']
676 class: Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher
677 arguments: ['@service_container']
680 factory: app.root.factory:get
682 - { name: parameter_service }
684 class: Drupal\Core\AppRootFactory
685 arguments: ['@kernel']
689 factory: site.path.factory:get
691 - { name: parameter_service }
693 class: Drupal\Core\SitePathFactory
694 arguments: ['@kernel']
697 class: Drupal\Core\Controller\ControllerResolver
698 arguments: ['@psr7.http_message_factory', '@class_resolver']
700 class: Drupal\Core\DependencyInjection\ClassResolver
702 - [setContainer, ['@service_container']]
704 class: Drupal\Core\Controller\TitleResolver
705 arguments: ['@controller_resolver', '@string_translation']
707 class: Stack\StackedHttpKernel
709 class: Symfony\Component\HttpKernel\HttpKernel
710 arguments: ['@event_dispatcher', '@controller_resolver', '@request_stack']
711 http_middleware.negotiation:
712 class: Drupal\Core\StackMiddleware\NegotiationMiddleware
714 - { name: http_middleware, priority: 400 }
715 http_middleware.reverse_proxy:
716 class: Drupal\Core\StackMiddleware\ReverseProxyMiddleware
717 arguments: ['@settings']
719 - { name: http_middleware, priority: 300 }
720 http_middleware.kernel_pre_handle:
721 class: Drupal\Core\StackMiddleware\KernelPreHandle
722 arguments: ['@kernel']
724 - { name: http_middleware, priority: 100 }
725 http_middleware.session:
726 class: Drupal\Core\StackMiddleware\Session
728 - { name: http_middleware, priority: 50 }
730 - [setContainer, ['@service_container']]
731 http_middleware.cors:
732 class: Asm89\Stack\Cors
733 arguments: ['%cors.config%']
735 - { name: http_middleware, priority: 250 }
736 psr7.http_foundation_factory:
737 class: Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory
738 psr7.http_message_factory:
739 class: Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory
741 class: Drupal\Core\Language\LanguageManager
742 arguments: ['@language.default']
743 language.current_language_context:
744 class: Drupal\Core\Language\ContextProvider\CurrentLanguageContext
745 arguments: ['@language_manager']
747 - { name: 'context_provider' }
749 class: Drupal\Core\Language\LanguageDefault
750 arguments: ['%language.default_values%']
751 string_translator.custom_strings:
752 class: Drupal\Core\StringTranslation\Translator\CustomStrings
753 arguments: ['@settings']
755 - { name: string_translator, priority: 30 }
757 class: Drupal\Core\StringTranslation\TranslationManager
758 arguments: ['@language.default']
760 - { name: service_collector, tag: string_translator, call: addTranslator }
762 class: Drupal\Core\Database\Connection
763 factory: Drupal\Core\Database\Database::getConnection
766 class: Drupal\Core\TypedData\TypedDataManager
767 arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@class_resolver']
769 - [setValidationConstraintManager, ['@validation.constraint']]
771 - { name: plugin_manager_cache_clear }
772 validation.constraint:
773 class: Drupal\Core\Validation\ConstraintManager
774 parent: default_plugin_manager
776 - { name: plugin_manager_cache_clear }
778 class: Drupal\Core\Lock\DatabaseLockBackend
779 arguments: ['@database']
781 - { name: backend_overridable }
784 class: Drupal\Core\Lock\PersistentDatabaseLockBackend
785 arguments: ['@database']
787 - { name: backend_overridable }
789 router.request_context:
790 class: Drupal\Core\Routing\RequestContext
794 - [fromRequestStack, ['@request_stack']]
795 router.admin_context:
796 class: Drupal\Core\Routing\AdminContext
797 arguments: ['@current_route_match']
798 router.route_provider:
799 class: Drupal\Core\Routing\RouteProvider
800 arguments: ['@database', '@state', '@path.current', '@cache.data', '@path_processor_manager', '@cache_tags.invalidator', 'router', '@language_manager']
802 - { name: event_subscriber }
803 - { name: backend_overridable }
804 router.route_provider.lazy_builder:
805 class: Drupal\Core\Routing\RouteProviderLazyBuilder
806 arguments: ['@router.route_provider', '@router.builder']
808 - { name: event_subscriber }
809 router.route_preloader:
810 class: Drupal\Core\Routing\RoutePreloader
811 arguments: ['@router.route_provider', '@state', '@cache.bootstrap']
813 - { name: 'event_subscriber' }
814 router.matcher.final_matcher:
815 class: Drupal\Core\Routing\UrlMatcher
816 arguments: ['@path.current']
817 deprecated: The "%service_id%" service is deprecated. You should use the 'router.no_access_checks' service instead.
819 class: Symfony\Cmf\Component\Routing\NestedMatcher\NestedMatcher
820 arguments: ['@router.route_provider']
822 - [setFinalMatcher, ['@router.matcher.final_matcher']]
824 - { name: service_collector, tag: non_lazy_route_filter, call: addRouteFilter }
825 deprecated: The "%service_id%" service is deprecated. You should use the 'router.no_access_checks' service instead.
826 url_generator.non_bubbling:
827 class: Drupal\Core\Routing\UrlGenerator
828 arguments: ['@router.route_provider', '@path_processor_manager', '@route_processor_manager', '@request_stack', '%filter_protocols%']
831 - [setContext, ['@?router.request_context']]
833 class: Drupal\Core\Render\MetadataBubblingUrlGenerator
834 arguments: ['@url_generator.non_bubbling', '@renderer']
836 - [setContext, ['@?router.request_context']]
837 redirect.destination:
838 class: Drupal\Core\Routing\RedirectDestination
839 arguments: ['@request_stack', '@url_generator']
840 unrouted_url_assembler:
841 class: Drupal\Core\Utility\UnroutedUrlAssembler
842 arguments: ['@request_stack', '@path_processor_manager', '%filter_protocols%']
844 class: Drupal\Core\Utility\LinkGenerator
845 arguments: ['@url_generator', '@module_handler', '@renderer']
847 class: Drupal\Core\Routing\AccessAwareRouter
848 arguments: ['@router.no_access_checks', '@access_manager', '@current_user']
850 class: Symfony\Cmf\Component\Routing\DynamicRouter
851 arguments: ['@router.request_context', '@router.matcher', '@url_generator']
853 - { name: service_collector, tag: non_lazy_route_enhancer, call: addRouteEnhancer }
854 deprecated: The "%service_id%" service is deprecated. You should use the 'router.no_access_checks' service instead.
855 router.no_access_checks:
856 class: \Drupal\Core\Routing\Router
857 arguments: ['@router.route_provider', '@path.current', '@url_generator']
859 # @todo Try to combine those tags together, see https://www.drupal.org/node/2915772.
860 - { name: service_collector, tag: non_lazy_route_enhancer, call: addRouteEnhancer }
861 - { name: service_collector, tag: route_enhancer, call: addRouteEnhancer }
862 - { name: service_collector, tag: non_lazy_route_filter, call: addRouteFilter }
863 - { name: service_collector, tag: route_filter, call: addRouteFilter }
865 - [setContext, ['@router.request_context']]
866 router.path_roots_subscriber:
867 class: Drupal\Core\EventSubscriber\PathRootsSubscriber
868 arguments: ['@state']
870 - { name: event_subscriber }
872 class: Drupal\Core\Entity\Query\QueryFactory
873 arguments: ['@entity.manager']
875 - [setContainer, ['@service_container']]
877 class: Drupal\Core\Config\Entity\Query\QueryFactory
878 arguments: ['@config.factory', '@keyvalue', '@config.manager']
880 - { name: event_subscriber }
882 class: Drupal\Core\Entity\Query\Sql\QueryFactory
883 arguments: ['@database']
885 - { name: backend_overridable }
886 pgsql.entity.query.sql:
887 class: Drupal\Core\Entity\Query\Sql\pgsql\QueryFactory
888 arguments: ['@database']
890 class: Drupal\Core\Entity\Query\Null\QueryFactory
891 entity.query.keyvalue:
892 class: Drupal\Core\Entity\KeyValueStore\Query\QueryFactory
893 arguments: ['@keyvalue']
895 class: Drupal\Core\Routing\MatcherDumper
896 arguments: ['@database', '@state']
898 - { name: backend_overridable }
901 class: Drupal\Core\Routing\RouteBuilder
902 arguments: ['@router.dumper', '@lock', '@event_dispatcher', '@module_handler', '@controller_resolver', '@access_manager.check_provider']
905 - { name: needs_destruction }
906 menu.rebuild_subscriber:
907 class: Drupal\Core\EventSubscriber\MenuRouterRebuildSubscriber
908 arguments: ['@lock', '@plugin.manager.menu.link']
910 - { name: event_subscriber }
912 class: Drupal\Core\Path\AliasStorage
913 arguments: ['@database', '@module_handler']
915 - { name: backend_overridable }
917 class: Drupal\Core\Path\PathMatcher
918 arguments: ['@config.factory', '@current_route_match']
920 class: Drupal\Core\Path\PathValidator
921 arguments: ['@router', '@router.no_access_checks', '@current_user', '@path_processor_manager']
923 # The argument to the hashing service defined in services.yml, to the
924 # constructor of PhpassHashedPassword is the log2 number of iterations for
925 # password stretching.
926 # @todo increase by 1 every Drupal version in order to counteract increases in
927 # the speed and power of computers available to crack the hashes. The current
928 # password hashing method was introduced in Drupal 7 with a log2 count of 15.
930 class: Drupal\Core\Password\PhpassHashedPassword
932 request_format_route_filter:
933 class: Drupal\Core\Routing\RequestFormatRouteFilter
935 - { name: route_filter }
937 class: Drupal\Core\Routing\MethodFilter
939 # The HTTP method route filter must run very early: it removes any routes
940 # whose requirements do not allow the HTTP method of the current request.
941 # Throws a 405 if no routes match the current request's HTTP method.
942 # (If it runs before content_type_header_matcher, it can ensure that only
943 # receives routes which can have a Content-Type request header.)
944 - { name: route_filter, priority: 10 }
945 content_type_header_matcher:
946 class: Drupal\Core\Routing\ContentTypeHeaderMatcher
948 # The Content-Type request header route filter must run early: it removes
949 # any routes whose requirements do not allow the Content-Type request
950 # header of the current request.
951 # Throws a 415 if no routes match the Content-Type request header of the
952 # current request, or if it has no Content-Type request header.
953 # Note it does nothing for GET requests.
954 - { name: route_filter, priority: 5 }
955 paramconverter_manager:
956 class: Drupal\Core\ParamConverter\ParamConverterManager
958 - { name: service_collector, tag: paramconverter, call: addConverter }
959 paramconverter_subscriber:
960 class: Drupal\Core\EventSubscriber\ParamConverterSubscriber
962 - { name: event_subscriber }
963 arguments: ['@paramconverter_manager']
964 paramconverter.entity:
965 class: Drupal\Core\ParamConverter\EntityConverter
967 - { name: paramconverter }
968 arguments: ['@entity.manager', '@language_manager']
969 paramconverter.entity_revision:
970 class: Drupal\Core\ParamConverter\EntityRevisionParamConverter
972 - { name: paramconverter }
973 arguments: ['@entity_type.manager', '@entity.repository']
974 paramconverter.configentity_admin:
975 class: Drupal\Core\ParamConverter\AdminPathConfigEntityConverter
977 # Use a higher priority than EntityConverter, see the class for details.
978 - { name: paramconverter, priority: 5 }
979 arguments: ['@entity.manager', '@config.factory', '@router.admin_context']
981 route_subscriber.module:
982 class: Drupal\Core\EventSubscriber\ModuleRouteSubscriber
984 - { name: event_subscriber }
985 arguments: ['@module_handler']
986 resolver_manager.entity:
987 class: Drupal\Core\Entity\EntityResolverManager
988 arguments: ['@entity.manager', '@class_resolver']
989 route_subscriber.entity:
990 class: Drupal\Core\EventSubscriber\EntityRouteAlterSubscriber
992 - { name: event_subscriber }
993 arguments: ['@resolver_manager.entity']
994 ajax_response.subscriber:
995 class: Drupal\Core\EventSubscriber\AjaxResponseSubscriber
996 arguments: ['@ajax_response.attachments_processor']
998 - { name: event_subscriber }
999 form_ajax_subscriber:
1000 class: Drupal\Core\Form\EventSubscriber\FormAjaxSubscriber
1001 arguments: ['@form_ajax_response_builder', '@string_translation']
1003 - { name: event_subscriber }
1004 route_enhancer.param_conversion:
1005 class: Drupal\Core\Routing\Enhancer\ParamConversionEnhancer
1006 arguments: ['@paramconverter_manager']
1008 - { name: route_enhancer, priority: 5000 }
1009 - { name: event_subscriber }
1010 route_enhancer.form:
1011 class: Drupal\Core\Routing\Enhancer\FormRouteEnhancer
1013 - { name: route_enhancer }
1014 route_enhancer.entity:
1015 class: Drupal\Core\Entity\Enhancer\EntityRouteEnhancer
1017 - { name: route_enhancer, priority: 20 }
1018 route_enhancer.entity_revision:
1019 class: Drupal\Core\Routing\Enhancer\EntityRevisionRouteEnhancer
1021 - { name: route_enhancer }
1022 route_special_attributes_subscriber:
1023 class: Drupal\Core\EventSubscriber\SpecialAttributesRouteSubscriber
1025 - { name: event_subscriber }
1026 route_http_method_subscriber:
1027 class: Drupal\Core\EventSubscriber\RouteMethodSubscriber
1029 - { name: event_subscriber }
1030 psr_response_view_subscriber:
1031 class: Drupal\Core\EventSubscriber\PsrResponseSubscriber
1032 arguments: ['@psr7.http_foundation_factory']
1034 - { name: event_subscriber }
1036 # Main content view subscriber plus the renderers it uses.
1037 main_content_view_subscriber:
1038 class: Drupal\Core\EventSubscriber\MainContentViewSubscriber
1039 arguments: ['@class_resolver', '@current_route_match', '%main_content_renderers%']
1041 - { name: event_subscriber }
1043 class: Drupal\Core\EventSubscriber\RenderArrayNonHtmlSubscriber
1045 - { name: event_subscriber }
1046 main_content_renderer.html:
1047 class: Drupal\Core\Render\MainContent\HtmlRenderer
1048 arguments: ['@title_resolver', '@plugin.manager.display_variant', '@event_dispatcher', '@module_handler', '@renderer', '@render_cache', '%renderer.config%']
1050 - { name: render.main_content_renderer, format: html }
1051 main_content_renderer.ajax:
1052 class: Drupal\Core\Render\MainContent\AjaxRenderer
1053 arguments: ['@element_info']
1055 - { name: render.main_content_renderer, format: drupal_ajax }
1056 - { name: render.main_content_renderer, format: iframeupload }
1057 main_content_renderer.dialog:
1058 class: Drupal\Core\Render\MainContent\DialogRenderer
1059 arguments: ['@title_resolver']
1061 - { name: render.main_content_renderer, format: drupal_dialog }
1062 main_content_renderer.off_canvas:
1063 class: Drupal\Core\Render\MainContent\OffCanvasRenderer
1064 arguments: ['@title_resolver', '@renderer']
1066 - { name: render.main_content_renderer, format: drupal_dialog.off_canvas }
1067 main_content_renderer.modal:
1068 class: Drupal\Core\Render\MainContent\ModalRenderer
1069 arguments: ['@title_resolver']
1071 - { name: render.main_content_renderer, format: drupal_modal }
1073 class: Drupal\Core\Controller\HtmlFormController
1074 arguments: ['@controller_resolver', '@form_builder', '@class_resolver']
1075 controller.entity_form:
1076 class: Drupal\Core\Entity\HtmlEntityFormController
1077 arguments: ['@controller_resolver', '@form_builder', '@entity.manager']
1078 form_ajax_response_builder:
1079 class: Drupal\Core\Form\FormAjaxResponseBuilder
1080 arguments: ['@main_content_renderer.ajax', '@current_route_match']
1082 class: Symfony\Component\HttpKernel\EventListener\RouterListener
1084 - { name: event_subscriber }
1085 arguments: ['@router', '@request_stack', '@router.request_context', NULL]
1086 options_request_listener:
1087 class: Drupal\Core\EventSubscriber\OptionsRequestSubscriber
1088 arguments: ['@router.route_provider']
1090 - { name: event_subscriber }
1091 bare_html_page_renderer:
1092 class: Drupal\Core\Render\BareHtmlPageRenderer
1093 arguments: ['@renderer', '@html_response.attachments_processor']
1096 class: Drupal\Core\PrivateKey
1097 arguments: ['@state']
1099 class: Drupal\Core\Access\CsrfTokenGenerator
1100 arguments: ['@private_key', '@session_manager.metadata_bag']
1101 access_arguments_resolver_factory:
1102 class: Drupal\Core\Access\AccessArgumentsResolverFactory
1104 class: Drupal\Core\Access\AccessManager
1105 arguments: ['@router.route_provider', '@paramconverter_manager', '@access_arguments_resolver_factory', '@current_user', '@access_manager.check_provider']
1106 access_manager.check_provider:
1107 class: Drupal\Core\Access\CheckProvider
1109 - [setContainer, ['@service_container']]
1111 access_check.default:
1112 class: Drupal\Core\Access\DefaultAccessCheck
1114 - { name: access_check, applies_to: _access }
1115 access_check.entity:
1116 class: Drupal\Core\Entity\EntityAccessCheck
1118 - { name: access_check, applies_to: _entity_access }
1119 access_check.entity_create:
1120 class: Drupal\Core\Entity\EntityCreateAccessCheck
1121 arguments: ['@entity.manager']
1123 - { name: access_check, applies_to: _entity_create_access }
1124 access_check.entity_create_any:
1125 class: Drupal\Core\Entity\EntityCreateAnyAccessCheck
1126 arguments: ['@entity_type.manager', '@entity_type.bundle.info']
1128 - { name: access_check, applies_to: _entity_create_any_access }
1130 class: Drupal\Core\Theme\ThemeAccessCheck
1131 arguments: ['@theme_handler']
1133 - { name: access_check, applies_to: _access_theme }
1134 access_check.custom:
1135 class: Drupal\Core\Access\CustomAccessCheck
1136 arguments: ['@controller_resolver', '@access_arguments_resolver_factory']
1138 - { name: access_check, applies_to: _custom_access }
1140 class: Drupal\Core\Access\CsrfAccessCheck
1142 - { name: access_check, applies_to: _csrf_token, needs_incoming_request: TRUE }
1143 arguments: ['@csrf_token']
1144 access_check.header.csrf:
1145 class: Drupal\Core\Access\CsrfRequestHeaderAccessCheck
1146 arguments: ['@session_configuration', '@csrf_token']
1148 - { name: access_check, needs_incoming_request: TRUE }
1150 class: Drupal\Core\Site\MaintenanceMode
1151 arguments: ['@state', '@current_user']
1152 maintenance_mode_subscriber:
1153 class: Drupal\Core\EventSubscriber\MaintenanceModeSubscriber
1154 arguments: ['@maintenance_mode', '@config.factory', '@string_translation', '@url_generator', '@current_user', '@bare_html_page_renderer', '@messenger']
1156 - { name: event_subscriber }
1158 class: Drupal\Core\EventSubscriber\PathSubscriber
1160 - { name: event_subscriber }
1161 arguments: ['@path.alias_manager', '@path.current']
1162 route_access_response_subscriber:
1163 class: Drupal\Core\EventSubscriber\RouteAccessResponseSubscriber
1165 - { name: event_subscriber }
1166 client_error_response_subscriber:
1167 class: Drupal\Core\EventSubscriber\ClientErrorResponseSubscriber
1169 - { name: event_subscriber }
1170 anonymous_user_response_subscriber:
1171 class: Drupal\Core\EventSubscriber\AnonymousUserResponseSubscriber
1173 - { name: event_subscriber }
1174 arguments: ['@current_user']
1175 ajax_response.attachments_processor:
1176 class: Drupal\Core\Ajax\AjaxResponseAttachmentsProcessor
1178 arguments: ['@asset.resolver', '@config.factory', '@asset.css.collection_renderer', '@asset.js.collection_renderer', '@request_stack', '@renderer', '@module_handler']
1179 html_response.attachments_processor:
1180 class: Drupal\Core\Render\HtmlResponseAttachmentsProcessor
1182 arguments: ['@asset.resolver', '@config.factory', '@asset.css.collection_renderer', '@asset.js.collection_renderer', '@request_stack', '@renderer', '@module_handler']
1183 html_response.subscriber:
1184 class: Drupal\Core\EventSubscriber\HtmlResponseSubscriber
1186 - { name: event_subscriber }
1187 arguments: ['@html_response.attachments_processor']
1188 finish_response_subscriber:
1189 class: Drupal\Core\EventSubscriber\FinishResponseSubscriber
1191 - { name: event_subscriber }
1192 arguments: ['@language_manager', '@config.factory', '@page_cache_request_policy', '@page_cache_response_policy', '@cache_contexts_manager', '%http.response.debug_cacheability_headers%']
1193 response_generator_subscriber:
1194 class: Drupal\Core\EventSubscriber\ResponseGeneratorSubscriber
1196 - { name: event_subscriber }
1197 redirect_response_subscriber:
1198 class: Drupal\Core\EventSubscriber\RedirectResponseSubscriber
1199 arguments: ['@unrouted_url_assembler', '@router.request_context']
1201 - { name: event_subscriber }
1202 redirect_leading_slashes_subscriber:
1203 class: Drupal\Core\EventSubscriber\RedirectLeadingSlashesSubscriber
1205 - { name: event_subscriber }
1206 request_close_subscriber:
1207 class: Drupal\Core\EventSubscriber\RequestCloseSubscriber
1209 - { name: event_subscriber }
1210 arguments: ['@module_handler']
1211 config_import_subscriber:
1212 class: Drupal\Core\EventSubscriber\ConfigImportSubscriber
1214 - { name: event_subscriber }
1215 arguments: ['@theme_handler']
1216 config_snapshot_subscriber:
1217 class: Drupal\Core\EventSubscriber\ConfigSnapshotSubscriber
1219 - { name: event_subscriber }
1220 arguments: ['@config.manager', '@config.storage', '@config.storage.snapshot']
1221 exception.needs_installer:
1222 class: Drupal\Core\EventSubscriber\ExceptionDetectNeedsInstallSubscriber
1223 arguments: ['@database']
1225 - { name: event_subscriber }
1226 exception.default_json:
1227 class: Drupal\Core\EventSubscriber\ExceptionJsonSubscriber
1229 - { name: event_subscriber }
1230 exception.default_html:
1231 class: Drupal\Core\EventSubscriber\DefaultExceptionHtmlSubscriber
1233 - { name: event_subscriber }
1234 arguments: ['@http_kernel', '@logger.channel.php', '@redirect.destination', '@router.no_access_checks']
1236 class: Drupal\Core\EventSubscriber\FinalExceptionSubscriber
1238 - { name: event_subscriber }
1239 arguments: ['@config.factory']
1241 class: Drupal\Core\EventSubscriber\ExceptionLoggingSubscriber
1243 - { name: event_subscriber }
1244 arguments: ['@logger.factory']
1245 exception.custom_page_html:
1246 class: Drupal\Core\EventSubscriber\CustomPageExceptionHtmlSubscriber
1248 - { name: event_subscriber }
1249 arguments: ['@config.factory', '@http_kernel', '@logger.channel.php', '@redirect.destination', '@router.no_access_checks', '@access_manager']
1250 exception.fast_404_html:
1251 class: Drupal\Core\EventSubscriber\Fast404ExceptionHtmlSubscriber
1253 - { name: event_subscriber }
1254 arguments: ['@config.factory', '@http_kernel']
1255 exception.test_site:
1256 class: Drupal\Core\EventSubscriber\ExceptionTestSiteSubscriber
1258 - { name: event_subscriber }
1259 exception.enforced_form_response:
1260 class: Drupal\Core\EventSubscriber\EnforcedFormResponseSubscriber
1262 - { name: event_subscriber }
1263 route_processor_manager:
1264 class: Drupal\Core\RouteProcessor\RouteProcessorManager
1266 - { name: service_collector, tag: route_processor_outbound, call: addOutbound }
1267 path_processor_manager:
1268 class: Drupal\Core\PathProcessor\PathProcessorManager
1270 - { name: service_collector, tag: path_processor_inbound, call: addInbound }
1271 - { name: service_collector, tag: path_processor_outbound, call: addOutbound }
1272 path_processor_decode:
1273 class: Drupal\Core\PathProcessor\PathProcessorDecode
1275 - { name: path_processor_inbound, priority: 1000 }
1276 path_processor_front:
1277 class: Drupal\Core\PathProcessor\PathProcessorFront
1279 - { name: path_processor_inbound, priority: 200 }
1280 - { name: path_processor_outbound, priority: 200 }
1281 arguments: ['@config.factory']
1282 route_processor_current:
1283 class: Drupal\Core\RouteProcessor\RouteProcessorCurrent
1284 arguments: ['@current_route_match']
1286 - { name: route_processor_outbound, priority: 200 }
1287 path_processor_alias:
1288 class: Drupal\Core\PathProcessor\PathProcessorAlias
1290 - { name: path_processor_inbound, priority: 100 }
1291 - { name: path_processor_outbound, priority: 300 }
1292 arguments: ['@path.alias_manager']
1293 route_processor_csrf:
1294 class: Drupal\Core\Access\RouteProcessorCsrf
1296 - { name: route_processor_outbound }
1297 arguments: ['@csrf_token']
1299 class: Drupal\Core\Transliteration\PhpTransliteration
1300 arguments: [null, '@module_handler']
1302 class: Drupal\Core\Flood\DatabaseBackend
1303 arguments: ['@database', '@request_stack']
1305 - { name: backend_overridable }
1306 plugin.manager.mail:
1307 class: Drupal\Core\Mail\MailManager
1308 arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@config.factory', '@logger.factory', '@string_translation', '@renderer']
1309 plugin.manager.condition:
1310 class: Drupal\Core\Condition\ConditionManager
1311 parent: default_plugin_manager
1312 plugin.manager.element_info:
1313 class: Drupal\Core\Render\ElementInfoManager
1314 arguments: ['@container.namespaces', '@cache.discovery', '@cache_tags.invalidator', '@module_handler', '@theme.manager']
1315 stream_wrapper_manager:
1316 class: Drupal\Core\StreamWrapper\StreamWrapperManager
1318 - [setContainer, ['@service_container']]
1319 stream_wrapper.public:
1320 class: Drupal\Core\StreamWrapper\PublicStream
1322 - { name: stream_wrapper, scheme: public }
1323 stream_wrapper.temporary:
1324 class: Drupal\Core\StreamWrapper\TemporaryStream
1326 - { name: stream_wrapper, scheme: temporary }
1327 kernel_destruct_subscriber:
1328 class: Drupal\Core\EventSubscriber\KernelDestructionSubscriber
1330 - { name: event_subscriber }
1332 - [setContainer, ['@service_container']]
1333 image.toolkit.manager:
1334 class: Drupal\Core\ImageToolkit\ImageToolkitManager
1335 arguments: ['@config.factory']
1336 parent: default_plugin_manager
1338 - { name: plugin_manager_cache_clear }
1339 image.toolkit.operation.manager:
1340 class: Drupal\Core\ImageToolkit\ImageToolkitOperationManager
1341 arguments: ['@logger.channel.image', '@image.toolkit.manager']
1342 parent: default_plugin_manager
1344 - { name: plugin_manager_cache_clear }
1346 class: Drupal\Core\Image\ImageFactory
1347 arguments: ['@image.toolkit.manager']
1349 class: Drupal\Core\Breadcrumb\BreadcrumbManager
1350 arguments: ['@module_handler']
1352 - { name: service_collector, tag: breadcrumb_builder, call: addBuilder }
1354 class: Drupal\Core\Utility\Token
1355 arguments: ['@module_handler', '@cache.default', '@language_manager', '@cache_tags.invalidator', '@renderer']
1357 class: Drupal\Core\Batch\BatchStorage
1358 arguments: ['@database', '@session', '@csrf_token']
1360 - { name: backend_overridable }
1362 replica_database_ignore__subscriber:
1363 class: Drupal\Core\EventSubscriber\ReplicaDatabaseIgnoreSubscriber
1365 - {name: event_subscriber}
1367 class: Drupal\Core\Locale\CountryManager
1368 arguments: ['@module_handler']
1370 class: Drupal\Core\Datetime\DateFormatter
1371 arguments: ['@entity.manager', '@language_manager', '@string_translation', '@config.factory', '@request_stack']
1373 class: Drupal\Component\Bridge\ZfExtensionManagerSfContainer
1375 - [setContainer, ['@service_container']]
1376 arguments: ['feed.reader.']
1378 class: Drupal\Component\Bridge\ZfExtensionManagerSfContainer
1380 - [setContainer, ['@service_container']]
1381 arguments: ['feed.writer.']
1382 # Zend Feed reader plugins. Plugin instances should not be shared.
1383 feed.reader.dublincoreentry:
1384 class: Zend\Feed\Reader\Extension\DublinCore\Entry
1386 feed.reader.dublincorefeed:
1387 class: Zend\Feed\Reader\Extension\DublinCore\Feed
1389 feed.reader.contententry:
1390 class: Zend\Feed\Reader\Extension\Content\Entry
1392 feed.reader.atomentry:
1393 class: Zend\Feed\Reader\Extension\Atom\Entry
1395 feed.reader.atomfeed:
1396 class: Zend\Feed\Reader\Extension\Atom\Feed
1398 feed.reader.slashentry:
1399 class: Zend\Feed\Reader\Extension\Slash\Entry
1401 feed.reader.wellformedwebentry:
1402 class: Zend\Feed\Reader\Extension\WellFormedWeb\Entry
1404 feed.reader.threadentry:
1405 class: Zend\Feed\Reader\Extension\Thread\Entry
1407 feed.reader.podcastentry:
1408 class: Zend\Feed\Reader\Extension\Podcast\Entry
1410 feed.reader.podcastfeed:
1411 class: Zend\Feed\Reader\Extension\Podcast\Feed
1413 # Zend Feed writer plugins. Plugins should be set as prototype scope.
1414 feed.writer.atomrendererfeed:
1415 class: Zend\Feed\Writer\Extension\Atom\Renderer\Feed
1417 feed.writer.contentrendererentry:
1418 class: Zend\Feed\Writer\Extension\Content\Renderer\Entry
1420 feed.writer.dublincorerendererentry:
1421 class: Zend\Feed\Writer\Extension\DublinCore\Renderer\Entry
1423 feed.writer.dublincorerendererfeed:
1424 class: Zend\Feed\Writer\Extension\DublinCore\Renderer\Feed
1426 feed.writer.itunesentry:
1427 class: Zend\Feed\Writer\Extension\ITunes\Entry
1429 feed.writer.itunesfeed:
1430 class: Zend\Feed\Writer\Extension\ITunes\Feed
1432 feed.writer.itunesrendererentry:
1433 class: Zend\Feed\Writer\Extension\ITunes\Renderer\Entry
1435 feed.writer.itunesrendererfeed:
1436 class: Zend\Feed\Writer\Extension\ITunes\Renderer\Feed
1438 feed.writer.slashrendererentry:
1439 class: Zend\Feed\Writer\Extension\Slash\Renderer\Entry
1441 feed.writer.threadingrendererentry:
1442 class: Zend\Feed\Writer\Extension\Threading\Renderer\Entry
1444 feed.writer.wellformedwebrendererentry:
1445 class: Zend\Feed\Writer\Extension\WellFormedWeb\Renderer\Entry
1448 class: Drupal\Core\Theme\ThemeManager
1449 arguments: ['@app.root', '@theme.negotiator', '@theme.initialization', '@module_handler']
1451 - [setThemeRegistry, ['@theme.registry']]
1452 theme.initialization:
1453 class: Drupal\Core\Theme\ThemeInitialization
1454 arguments: ['@app.root', '@theme_handler', '@cache.bootstrap', '@module_handler']
1456 class: Drupal\Core\Theme\Registry
1457 arguments: ['@app.root', '@cache.default', '@lock', '@module_handler', '@theme_handler', '@theme.initialization', null, '@cache.bootstrap']
1459 - { name: needs_destruction }
1461 - [setThemeManager, ['@theme.manager']]
1463 class: Drupal\Core\Authentication\AuthenticationManager
1464 arguments: ['@authentication_collector']
1465 authentication_collector:
1466 class: Drupal\Core\Authentication\AuthenticationCollector
1468 - { name: service_collector, tag: authentication_provider, call: addProvider }
1469 authentication_subscriber:
1470 class: Drupal\Core\EventSubscriber\AuthenticationSubscriber
1471 arguments: ['@authentication', '@current_user']
1473 - { name: event_subscriber }
1475 class: Drupal\Core\Session\AccountSwitcher
1476 arguments: ['@current_user', '@session_handler.write_safe']
1477 user_permissions_hash_generator:
1478 class: Drupal\Core\Session\PermissionsHashGenerator
1479 arguments: ['@private_key', '@cache.bootstrap', '@cache.static']
1481 class: Drupal\Core\Session\AccountProxy
1482 session_configuration:
1483 class: Drupal\Core\Session\SessionConfiguration
1484 arguments: ['%session.storage.options%']
1486 class: Symfony\Component\HttpFoundation\Session\Session
1487 arguments: ['@session_manager', '@session.attribute_bag', '@session.flash_bag']
1489 class: Symfony\Component\HttpFoundation\Session\Flash\FlashBag
1491 session.attribute_bag:
1492 class: Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag
1495 alias: session_handler.storage
1496 session_handler.storage:
1497 class: Drupal\Core\Session\SessionHandler
1498 arguments: ['@request_stack', '@database']
1500 - { name: backend_overridable }
1501 session_handler.write_check:
1502 class: Symfony\Component\HttpFoundation\Session\Storage\Handler\WriteCheckSessionHandler
1504 - { name: session_handler_proxy, priority: 100 }
1505 session_handler.write_safe:
1506 class: Drupal\Core\Session\WriteSafeSessionHandler
1508 - { name: session_handler_proxy, priority: 150 }
1510 class: Drupal\Core\Session\SessionManager
1511 arguments: ['@request_stack', '@database', '@session_manager.metadata_bag', '@session_configuration', '@session_handler']
1513 - { name: backend_overridable }
1515 - [setWriteSafeHandler, ['@session_handler.write_safe']]
1516 session_manager.metadata_bag:
1517 class: Drupal\Core\Session\MetadataBag
1518 arguments: ['@settings']
1519 asset.css.collection_renderer:
1520 class: Drupal\Core\Asset\CssCollectionRenderer
1521 arguments: [ '@state' ]
1522 asset.css.collection_optimizer:
1523 class: Drupal\Core\Asset\CssCollectionOptimizer
1524 arguments: [ '@asset.css.collection_grouper', '@asset.css.optimizer', '@asset.css.dumper', '@state' ]
1525 asset.css.optimizer:
1526 class: Drupal\Core\Asset\CssOptimizer
1527 asset.css.collection_grouper:
1528 class: Drupal\Core\Asset\CssCollectionGrouper
1530 class: Drupal\Core\Asset\AssetDumper
1531 asset.js.collection_renderer:
1532 class: Drupal\Core\Asset\JsCollectionRenderer
1533 arguments: [ '@state' ]
1534 asset.js.collection_optimizer:
1535 class: Drupal\Core\Asset\JsCollectionOptimizer
1536 arguments: [ '@asset.js.collection_grouper', '@asset.js.optimizer', '@asset.js.dumper', '@state' ]
1538 class: Drupal\Core\Asset\JsOptimizer
1539 asset.js.collection_grouper:
1540 class: Drupal\Core\Asset\JsCollectionGrouper
1542 class: Drupal\Core\Asset\AssetDumper
1544 class: Drupal\Core\Asset\LibraryDiscovery
1545 arguments: ['@library.discovery.collector']
1546 library.discovery.collector:
1547 class: Drupal\Core\Asset\LibraryDiscoveryCollector
1548 arguments: ['@cache.discovery', '@lock', '@library.discovery.parser', '@theme.manager']
1550 - { name: needs_destruction }
1551 library.discovery.parser:
1552 class: Drupal\Core\Asset\LibraryDiscoveryParser
1553 arguments: ['@app.root', '@module_handler', '@theme.manager']
1554 library.dependency_resolver:
1555 class: Drupal\Core\Asset\LibraryDependencyResolver
1556 arguments: ['@library.discovery']
1558 class: Drupal\Core\Asset\AssetResolver
1559 arguments: ['@library.discovery', '@library.dependency_resolver', '@module_handler', '@theme.manager', '@language_manager', '@cache.data']
1561 class: Drupal\Core\Extension\InfoParser
1563 class: Drupal\Core\Template\TwigEnvironment
1564 arguments: ['@app.root', '@cache.default', '%twig_extension_hash%', '@state', '@twig.loader', '%twig.config%']
1566 - { name: service_collector, tag: 'twig.extension', call: addExtension }
1568 class: Drupal\Core\Template\TwigExtension
1569 arguments: ['@renderer', '@url_generator', '@theme.manager', '@date.formatter']
1571 - { name: twig.extension, priority: 100 }
1572 # @todo Figure out what to do about debugging functions.
1573 # @see https://www.drupal.org/node/1804998
1574 twig.extension.debug:
1575 class: Twig_Extension_Debug
1577 - { name: twig.extension }
1579 class: Twig_Loader_Chain
1582 - { name: service_collector, tag: twig.loader, call: addLoader, required: TRUE }
1583 twig.loader.filesystem:
1584 class: Drupal\Core\Template\Loader\FilesystemLoader
1585 arguments: ['@app.root', '@module_handler', '@theme_handler']
1587 - { name: twig.loader, priority: 100 }
1588 twig.loader.theme_registry:
1589 class: Drupal\Core\Template\Loader\ThemeRegistryLoader
1590 arguments: ['@theme.registry']
1592 - { name: twig.loader, priority: 0 }
1594 class: Drupal\Core\Template\Loader\StringLoader
1596 - { name: twig.loader, priority: -100 }
1598 alias: plugin.manager.element_info
1599 file.mime_type.guesser:
1600 class: Drupal\Core\File\MimeType\MimeTypeGuesser
1601 arguments: ['@stream_wrapper_manager']
1603 - { name: service_collector, tag: mime_type_guesser, call: addGuesser }
1605 file.mime_type.guesser.extension:
1606 class: Drupal\Core\File\MimeType\ExtensionMimeTypeGuesser
1607 arguments: ['@module_handler']
1609 - { name: mime_type_guesser }
1611 # Currently needs to be public as it is called by
1612 # \Drupal\Core\Render\Element\StatusMessages.
1613 # @todo Consider making this service private again after
1614 # https://www.drupal.org/node/2367555 lands.
1615 render_placeholder_generator:
1616 class: Drupal\Core\Render\PlaceholderGenerator
1617 arguments: ['%renderer.config%']
1619 class: Drupal\Core\Render\PlaceholderingRenderCache
1620 arguments: ['@request_stack', '@cache_factory', '@cache_contexts_manager', '@render_placeholder_generator']
1622 class: Drupal\Core\Render\Renderer
1623 arguments: ['@controller_resolver', '@theme.manager', '@plugin.manager.element_info', '@render_placeholder_generator', '@render_cache', '@request_stack', '%renderer.config%']
1624 early_rendering_controller_wrapper_subscriber:
1625 class: Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber
1626 arguments: ['@controller_resolver', '@renderer']
1628 - { name: event_subscriber }
1629 # Placeholder strategies for rendering placeholders.
1630 html_response.placeholder_strategy_subscriber:
1631 class: Drupal\Core\EventSubscriber\HtmlResponsePlaceholderStrategySubscriber
1633 - { name: event_subscriber }
1634 arguments: ['@placeholder_strategy']
1635 placeholder_strategy:
1636 class: Drupal\Core\Render\Placeholder\ChainedPlaceholderStrategy
1638 - { name: service_collector, tag: placeholder_strategy, call: addPlaceholderStrategy }
1639 placeholder_strategy.single_flush:
1640 class: Drupal\Core\Render\Placeholder\SingleFlushStrategy
1642 - { name: placeholder_strategy, priority: -1000 }
1644 class: Egulias\EmailValidator\EmailValidator
1645 update.post_update_registry:
1646 class: Drupal\Core\Update\UpdateRegistry
1647 factory: ['@update.post_update_registry_factory', create]
1648 update.post_update_registry_factory:
1649 class: Drupal\Core\Update\UpdateRegistryFactory
1650 parent: container.trait
1652 class: Drupal\Component\Uuid\Php
1653 response_filter.active_link:
1654 class: Drupal\Core\EventSubscriber\ActiveLinkResponseFilter
1655 arguments: ['@current_user', '@path.current', '@path.matcher', '@language_manager']
1657 - { name: event_subscriber }
1658 response_filter.rss.relative_url:
1659 class: Drupal\Core\EventSubscriber\RssResponseRelativeUrlFilter
1661 - { name: event_subscriber }
1663 class: Drupal\Core\Messenger\Messenger
1664 arguments: ['@session.flash_bag', '@page_cache_kill_switch']
1666 class: Drupal\Core\TempStore\PrivateTempStoreFactory
1667 arguments: ['@keyvalue.expirable', '@lock', '@current_user', '@request_stack', '%tempstore.expire%']
1669 - { name: backend_overridable }
1671 class: Drupal\Core\TempStore\SharedTempStoreFactory
1672 arguments: ['@keyvalue.expirable', '@lock', '@request_stack', '%tempstore.expire%']
1674 - { name: backend_overridable }