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
45 # Simple cache contexts, directly derived from the request context.
47 class: Drupal\Core\Cache\Context\IpCacheContext
48 arguments: ['@request_stack']
50 - { name: cache.context }
51 cache_context.headers:
52 class: Drupal\Core\Cache\Context\HeadersCacheContext
53 arguments: ['@request_stack']
55 - { name: cache.context }
56 cache_context.cookies:
57 class: Drupal\Core\Cache\Context\CookiesCacheContext
58 arguments: ['@request_stack']
60 - { name: cache.context }
61 cache_context.session:
62 class: Drupal\Core\Cache\Context\SessionCacheContext
63 arguments: ['@request_stack']
65 - { name: cache.context}
66 cache_context.session.exists:
67 class: Drupal\Core\Cache\Context\SessionExistsCacheContext
68 arguments: ['@session_configuration', '@request_stack']
70 - { name: cache.context}
71 cache_context.request_format:
72 class: Drupal\Core\Cache\Context\RequestFormatCacheContext
73 arguments: ['@request_stack']
75 - { name: cache.context }
77 class: Drupal\Core\Cache\Context\UrlCacheContext
78 arguments: ['@request_stack']
80 - { name: cache.context }
81 cache_context.url.site:
82 class: Drupal\Core\Cache\Context\SiteCacheContext
83 arguments: ['@request_stack']
85 - { name: cache.context }
86 cache_context.url.path:
87 class: Drupal\Core\Cache\Context\PathCacheContext
88 arguments: ['@request_stack']
90 - { name: cache.context }
91 cache_context.url.path.parent:
92 class: Drupal\Core\Cache\Context\PathParentCacheContext
93 arguments: ['@request_stack']
95 - { name: cache.context }
96 cache_context.url.path.is_front:
97 class: Drupal\Core\Cache\Context\IsFrontPathCacheContext
98 arguments: ['@path.matcher']
100 - { name: cache.context }
101 cache_context.url.query_args:
102 class: Drupal\Core\Cache\Context\QueryArgsCacheContext
103 arguments: ['@request_stack']
105 - { name: cache.context }
106 cache_context.url.query_args.pagers:
107 class: Drupal\Core\Cache\Context\PagersCacheContext
108 arguments: ['@request_stack']
110 - { name: cache.context }
112 # Complex cache contexts, that depend on the routing system.
114 class: Drupal\Core\Cache\Context\RouteCacheContext
115 arguments: ['@current_route_match']
117 - { name: cache.context }
118 cache_context.route.name:
119 class: Drupal\Core\Cache\Context\RouteNameCacheContext
120 arguments: ['@current_route_match']
122 - { name: cache.context }
123 cache_context.route.menu_active_trails:
124 class: Drupal\Core\Cache\Context\MenuActiveTrailsCacheContext
126 - [setContainer, ['@service_container']]
128 - { name: cache.context }
130 # Complex cache contexts, that may be calculated from a combination of
131 # multiple aspects of the request context plus additional logic. Hence they
132 # are their own roots.
134 class: Drupal\Core\Cache\Context\UserCacheContext
135 arguments: ['@current_user']
137 - { name: cache.context}
138 cache_context.user.permissions:
139 class: Drupal\Core\Cache\Context\AccountPermissionsCacheContext
140 arguments: ['@current_user', '@user_permissions_hash_generator']
142 - { name: cache.context}
143 cache_context.user.roles:
144 class: Drupal\Core\Cache\Context\UserRolesCacheContext
145 arguments: ['@current_user']
147 - { name: cache.context}
148 cache_context.user.is_super_user:
149 class: Drupal\Core\Cache\Context\IsSuperUserCacheContext
150 arguments: ['@current_user']
152 - { name: cache.context}
153 cache_context.languages:
154 class: Drupal\Core\Cache\Context\LanguagesCacheContext
155 arguments: ['@language_manager']
157 - { name: cache.context}
159 class: Drupal\Core\Cache\Context\ThemeCacheContext
160 arguments: ['@theme.manager']
162 - { name: cache.context}
163 cache_context.timezone:
164 class: Drupal\Core\Cache\Context\TimeZoneCacheContext
166 - { name: cache.context}
169 class: Drupal\Core\Cache\CacheFactory
170 arguments: ['@settings', '%cache_default_bin_backends%']
172 - [setContainer, ['@service_container']]
173 cache_contexts_manager:
174 class: Drupal\Core\Cache\Context\CacheContextsManager
175 arguments: ['@service_container', '%cache_contexts%' ]
176 cache_tags.invalidator:
177 parent: container.trait
178 class: Drupal\Core\Cache\CacheTagsInvalidator
180 - [setContainer, ['@service_container']]
182 - { name: service_collector, call: addInvalidator, tag: cache_tags_invalidator }
183 cache_tags.invalidator.checksum:
184 class: Drupal\Core\Cache\DatabaseCacheTagsChecksum
185 arguments: ['@database']
187 - { name: cache_tags_invalidator}
188 cache.backend.chainedfast:
189 class: Drupal\Core\Cache\ChainedFastBackendFactory
190 arguments: ['@settings']
192 - [setContainer, ['@service_container']]
193 cache.backend.database:
194 class: Drupal\Core\Cache\DatabaseBackendFactory
195 arguments: ['@database', '@cache_tags.invalidator.checksum', '@settings']
197 class: Drupal\Core\Cache\ApcuBackendFactory
198 arguments: ['@app.root', '@site.path', '@cache_tags.invalidator.checksum']
200 class: Drupal\Core\Cache\PhpBackendFactory
201 arguments: ['@cache_tags.invalidator.checksum']
202 cache.backend.memory:
203 class: Drupal\Core\Cache\MemoryBackendFactory
204 # A special cache bin that does not persist beyond the length of the request.
206 class: Drupal\Core\Cache\CacheBackendInterface
208 - { name: cache.bin, default_backend: cache.backend.memory }
209 factory: cache_factory:get
212 class: Drupal\Core\Cache\CacheBackendInterface
214 - { name: cache.bin, default_backend: cache.backend.chainedfast }
215 factory: cache_factory:get
216 arguments: [bootstrap]
218 class: Drupal\Core\Cache\CacheBackendInterface
220 - { name: cache.bin, default_backend: cache.backend.chainedfast }
221 factory: cache_factory:get
224 class: Drupal\Core\Cache\CacheBackendInterface
226 - { name: cache.bin }
227 factory: cache_factory:get
230 class: Drupal\Core\Cache\CacheBackendInterface
232 - { name: cache.bin }
233 factory: cache_factory:get
236 class: Drupal\Core\Cache\CacheBackendInterface
238 - { name: cache.bin }
239 factory: cache_factory:get
242 class: Drupal\Core\Cache\CacheBackendInterface
244 - { name: cache.bin }
245 factory: cache_factory:get
248 class: Drupal\Core\Cache\CacheBackendInterface
250 - { name: cache.bin }
251 factory: cache_factory:get
254 class: Drupal\Core\Cache\CacheBackendInterface
256 - { name: cache.bin, default_backend: cache.backend.chainedfast }
257 factory: cache_factory:get
258 arguments: [discovery]
259 cache_router_rebuild_subscriber:
260 class: Drupal\Core\EventSubscriber\CacheRouterRebuildSubscriber
262 - { name: event_subscriber }
263 page_cache_request_policy:
264 class: Drupal\Core\PageCache\DefaultRequestPolicy
265 arguments: ['@session_configuration']
267 - { name: service_collector, tag: page_cache_request_policy, call: addPolicy}
268 page_cache_response_policy:
269 class: Drupal\Core\PageCache\ChainResponsePolicy
271 - { name: service_collector, tag: page_cache_response_policy, call: addPolicy}
273 page_cache_kill_switch:
274 class: Drupal\Core\PageCache\ResponsePolicy\KillSwitch
276 - { name: page_cache_response_policy }
277 - { name: dynamic_page_cache_response_policy }
278 page_cache_no_cache_routes:
279 class: Drupal\Core\PageCache\ResponsePolicy\DenyNoCacheRoutes
280 arguments: ['@current_route_match']
283 - { name: page_cache_response_policy }
284 - { name: dynamic_page_cache_response_policy }
285 page_cache_no_server_error:
286 class: Drupal\Core\PageCache\ResponsePolicy\NoServerError
289 - { name: page_cache_response_policy }
290 - { name: dynamic_page_cache_response_policy }
292 class: Drupal\Core\Config\ConfigManager
293 arguments: ['@entity.manager', '@config.factory', '@config.typed', '@string_translation', '@config.storage', '@event_dispatcher']
295 class: Drupal\Core\Config\ConfigFactory
297 - { name: event_subscriber }
298 - { name: service_collector, tag: 'config.factory.override', call: addOverride }
299 arguments: ['@config.storage', '@event_dispatcher', '@config.typed']
300 config.importer_subscriber:
301 class: Drupal\Core\Config\Importer\FinalMissingContentSubscriber
303 - { name: event_subscriber }
305 class: Drupal\Core\Config\ConfigInstaller
306 arguments: ['@config.factory', '@config.storage', '@config.typed', '@config.manager', '@event_dispatcher', '%install_profile%']
309 class: Drupal\Core\Config\CachedStorage
310 arguments: ['@config.storage.active', '@cache.config']
311 config.storage.active:
312 class: Drupal\Core\Config\DatabaseStorage
313 arguments: ['@database', 'config']
316 - { name: backend_overridable }
317 # @deprecated in Drupal 8.0.x and will be removed before 9.0.0. Use
318 # config.storage.sync instead.
319 # @see https://www.drupal.org/node/2574957
320 config.storage.staging:
321 class: Drupal\Core\Config\FileStorage
322 factory: Drupal\Core\Config\FileStorageFactory::getSync
324 alias: config.storage.staging
325 config.storage.snapshot:
326 class: Drupal\Core\Config\DatabaseStorage
327 arguments: ['@database', config_snapshot]
329 - { name: backend_overridable }
330 config.storage.schema:
331 class: Drupal\Core\Config\ExtensionInstallStorage
332 arguments: ['@config.storage', 'config/schema', '', true, '%install_profile%']
334 class: Drupal\Core\Config\TypedConfigManager
335 arguments: ['@config.storage', '@config.storage.schema', '@cache.discovery', '@module_handler', '@class_resolver']
337 - { name: plugin_manager_cache_clear }
339 - [setValidationConstraintManager, ['@validation.constraint']]
341 class: Drupal\Core\Plugin\Context\ContextHandler
342 arguments: ['@typed_data_manager']
344 class: Drupal\Core\Plugin\Context\LazyContextRepository
345 arguments: ['@service_container']
347 class: Drupal\Core\Cron
348 arguments: ['@module_handler', '@lock', '@queue', '@state', '@account_switcher', '@logger.channel.cron', '@plugin.manager.queue_worker']
351 class: Drupal\Core\Diff\DiffFormatter
352 arguments: ['@config.factory']
354 class: Drupal\Core\Database\Connection
355 factory: Drupal\Core\Database\Database::getConnection
358 class: Drupal\Component\Datetime\Time
359 arguments: ['@request_stack']
361 class: Drupal\Core\File\FileSystem
362 arguments: ['@stream_wrapper_manager', '@settings', '@logger.channel.file']
364 class: Drupal\Core\Form\FormBuilder
365 arguments: ['@form_validator', '@form_submitter', '@form_cache', '@module_handler', '@event_dispatcher', '@request_stack', '@class_resolver', '@element_info', '@theme.manager', '@?csrf_token']
367 class: Drupal\Core\Form\FormValidator
368 arguments: ['@request_stack', '@string_translation', '@csrf_token', '@logger.channel.form', '@form_error_handler']
370 class: Drupal\Core\Form\FormSubmitter
371 arguments: ['@request_stack', '@url_generator']
373 class: Drupal\Core\Form\FormErrorHandler
375 class: Drupal\Core\Form\FormCache
376 arguments: ['@app.root', '@keyvalue.expirable', '@module_handler', '@current_user', '@csrf_token', '@logger.channel.form', '@request_stack', '@page_cache_request_policy']
377 public: false # Private to form_builder
379 class: Drupal\Core\KeyValueStore\KeyValueFactory
380 arguments: ['@service_container', '%factory.keyvalue%']
382 class: Drupal\Core\KeyValueStore\KeyValueDatabaseFactory
383 arguments: ['@serialization.phpserialize', '@database']
385 class: Drupal\Core\KeyValueStore\KeyValueExpirableFactory
386 arguments: ['@service_container', '%factory.keyvalue.expirable%']
387 keyvalue.expirable.database:
388 class: Drupal\Core\KeyValueStore\KeyValueDatabaseExpirableFactory
389 arguments: ['@serialization.phpserialize', '@database']
391 class: Drupal\Core\Logger\LoggerChannelFactory
392 parent: container.trait
394 - { name: service_collector, tag: logger, call: addLogger }
397 class: Drupal\Core\Logger\LoggerChannel
398 factory: logger.factory:get
399 logger.channel.default:
400 parent: logger.channel_base
401 arguments: ['system']
403 parent: logger.channel_base
405 logger.channel.image:
406 parent: logger.channel_base
409 parent: logger.channel_base
412 class: Drupal\Core\Logger\LoggerChannel
413 factory: logger.factory:get
416 parent: logger.channel_base
418 logger.log_message_parser:
419 class: Drupal\Core\Logger\LogMessageParser
422 class: Drupal\Component\Serialization\Json
423 serialization.phpserialize:
424 class: Drupal\Component\Serialization\PhpSerialize
426 class: Drupal\Component\Serialization\Yaml
429 class: Drupal\Core\Site\Settings
430 factory: Drupal\Core\Site\Settings::getInstance
432 class: Drupal\Core\State\State
433 arguments: ['@keyvalue', '@cache.bootstrap', '@lock']
435 - { name: needs_destruction }
437 class: Drupal\Core\Queue\QueueFactory
438 arguments: ['@settings']
440 - [setContainer, ['@service_container']]
442 class: Drupal\Core\Queue\QueueDatabaseFactory
443 arguments: ['@database']
444 path.alias_whitelist:
445 class: Drupal\Core\Path\AliasWhitelist
447 - { name: needs_destruction }
448 arguments: [path_alias_whitelist, '@cache.bootstrap', '@lock', '@state', '@path.alias_storage']
450 class: Drupal\Core\Path\AliasManager
451 arguments: ['@path.alias_storage', '@path.alias_whitelist', '@language_manager', '@cache.data']
453 class: Drupal\Core\Path\CurrentPathStack
454 arguments: ['@request_stack']
456 class: GuzzleHttp\HandlerStack
458 factory: GuzzleHttp\HandlerStack::create
459 configurator: ['@http_handler_stack_configurator', configure]
460 http_handler_stack_configurator:
461 class: Drupal\Core\Http\HandlerStackConfigurator
463 arguments: ['@service_container']
465 class: GuzzleHttp\Client
466 factory: http_client_factory:fromOptions
468 class: Drupal\Core\Http\ClientFactory
469 arguments: ['@http_handler_stack']
470 plugin.manager.link_relation_type:
471 class: \Drupal\Core\Http\LinkRelationTypeManager
472 arguments: ['@app.root', '@module_handler', '@cache.discovery']
474 class: Drupal\Core\Theme\ThemeNegotiator
475 arguments: ['@access_check.theme', '@class_resolver']
477 - { name: service_id_collector, tag: theme_negotiator }
478 theme.negotiator.default:
479 class: Drupal\Core\Theme\DefaultNegotiator
480 arguments: ['@config.factory']
482 - { name: theme_negotiator, priority: -100 }
483 theme.negotiator.ajax_base_page:
484 class: Drupal\Core\Theme\AjaxBasePageNegotiator
485 arguments: ['@csrf_token', '@config.factory', '@request_stack']
487 - { name: theme_negotiator, priority: 1000 }
488 container.namespaces:
490 arguments: [ '%container.namespaces%' ]
494 - [setContainer, ['@service_container']]
495 default_plugin_manager:
497 arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
499 class: Drupal\Core\Extension\ModuleHandler
500 arguments: ['@app.root', '%container.modules%', '@cache.bootstrap']
502 class: Drupal\Core\Extension\ModuleInstaller
504 - { name: service_collector, tag: 'module_install.uninstall_validator', call: addUninstallValidator }
505 arguments: ['@app.root', '@module_handler', '@kernel', '@router.builder']
507 content_uninstall_validator:
508 class: Drupal\Core\Entity\ContentUninstallValidator
510 - { name: module_install.uninstall_validator }
511 arguments: ['@entity.manager', '@string_translation']
513 field_uninstall_validator:
514 class: Drupal\Core\Field\FieldModuleUninstallValidator
516 - { name: module_install.uninstall_validator }
517 arguments: ['@entity.manager', '@string_translation']
519 required_module_uninstall_validator:
520 class: Drupal\Core\Extension\RequiredModuleUninstallValidator
522 - { name: module_install.uninstall_validator }
523 arguments: ['@string_translation']
526 class: Drupal\Core\Extension\ThemeHandler
527 arguments: ['@app.root', '@config.factory', '@module_handler', '@state', '@info_parser']
529 class: Drupal\Core\Extension\ThemeInstaller
530 arguments: ['@theme_handler', '@config.factory', '@config.installer', '@module_handler', '@config.manager', '@asset.css.collection_optimizer', '@router.builder', '@logger.channel.default', '@state']
531 # @deprecated in Drupal 8.0.x and will be removed before 9.0.0. Use the other
532 # entity* services instead.
534 # We cannot set the deprecated property here because many test cases still
535 # rely on this service and they would fail with deprecation warnings.
536 class: Drupal\Core\Entity\EntityManager
537 parent: container.trait
538 # @todo Remove this tag in https://www.drupal.org/node/2549143.
540 - { name: plugin_manager_cache_clear }
542 class: Drupal\Core\Entity\EntityTypeManager
543 arguments: ['@container.namespaces', '@module_handler', '@cache.discovery', '@string_translation', '@class_resolver']
544 parent: container.trait
546 - { name: plugin_manager_cache_clear }
547 entity_type.repository:
548 class: Drupal\Core\Entity\EntityTypeRepository
549 arguments: ['@entity_type.manager']
550 entity_type.bundle.info:
551 class: Drupal\Core\Entity\EntityTypeBundleInfo
552 arguments: ['@entity_type.manager', '@language_manager', '@module_handler', '@typed_data_manager', '@cache.discovery']
554 class: Drupal\Core\Entity\EntityRepository
555 arguments: ['@entity_type.manager', '@language_manager']
556 entity_display.repository:
557 class: Drupal\Core\Entity\EntityDisplayRepository
558 arguments: ['@entity_type.manager', '@module_handler', '@cache.discovery', '@language_manager']
559 entity_field.manager:
560 class: Drupal\Core\Entity\EntityFieldManager
561 arguments: ['@entity_type.manager', '@entity_type.bundle.info', '@entity_display.repository', '@typed_data_manager', '@language_manager', '@keyvalue', '@module_handler', '@cache.discovery']
562 entity_type.listener:
563 class: Drupal\Core\Entity\EntityTypeListener
564 arguments: ['@entity_type.manager', '@entity_field.manager', '@event_dispatcher', '@entity.last_installed_schema.repository']
565 entity_bundle.listener:
566 class: Drupal\Core\Entity\EntityBundleListener
567 arguments: ['@entity_type.manager', '@entity_type.bundle.info', '@entity_field.manager', '@module_handler']
568 entity_route_subscriber:
569 class: Drupal\Core\EventSubscriber\EntityRouteProviderSubscriber
570 arguments: ['@entity.manager']
572 - { name: event_subscriber }
573 entity.definition_update_manager:
574 class: Drupal\Core\Entity\EntityDefinitionUpdateManager
575 arguments: ['@entity.manager']
576 entity.last_installed_schema.repository:
577 class: Drupal\Core\Entity\EntityLastInstalledSchemaRepository
578 arguments: ['@keyvalue']
579 field_storage_definition.listener:
580 class: Drupal\Core\Field\FieldStorageDefinitionListener
581 arguments: ['@entity_type.manager', '@event_dispatcher', '@entity.last_installed_schema.repository', '@entity_field.manager']
582 field_definition.listener:
583 class: Drupal\Core\Field\FieldDefinitionListener
584 arguments: ['@entity_type.manager', '@entity_field.manager', '@keyvalue', '@cache.discovery']
586 class: Drupal\Core\Entity\EntityFormBuilder
587 arguments: ['@entity.manager', '@form_builder']
588 entity.bundle_config_import_validator:
589 class: Drupal\Core\Entity\Event\BundleConfigImportValidate
590 arguments: ['@config.manager', '@entity.manager']
592 - { name: event_subscriber }
593 entity.autocomplete_matcher:
594 class: Drupal\Core\Entity\EntityAutocompleteMatcher
595 arguments: ['@plugin.manager.entity_reference_selection']
597 class: Drupal\Core\Plugin\PluginFormFactory
598 arguments: ['@class_resolver']
599 plugin.manager.entity_reference_selection:
600 class: Drupal\Core\Entity\EntityReferenceSelection\SelectionPluginManager
601 parent: default_plugin_manager
602 plugin.manager.block:
603 class: Drupal\Core\Block\BlockManager
604 parent: default_plugin_manager
605 plugin.manager.field.field_type:
606 class: Drupal\Core\Field\FieldTypePluginManager
607 arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@typed_data_manager']
608 plugin.manager.field.widget:
609 class: Drupal\Core\Field\WidgetPluginManager
610 arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@plugin.manager.field.field_type']
611 plugin.manager.field.formatter:
612 class: Drupal\Core\Field\FormatterPluginManager
613 arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@plugin.manager.field.field_type']
614 plugin.manager.archiver:
615 class: Drupal\Core\Archiver\ArchiverManager
616 parent: default_plugin_manager
617 plugin.manager.action:
618 class: Drupal\Core\Action\ActionManager
619 arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
620 plugin.manager.menu.link:
621 class: Drupal\Core\Menu\MenuLinkManager
622 arguments: ['@menu.tree_storage', '@menu_link.static.overrides', '@module_handler']
624 class: Drupal\Core\Menu\MenuLinkTree
625 arguments: ['@menu.tree_storage', '@plugin.manager.menu.link', '@router.route_provider', '@menu.active_trail', '@controller_resolver']
626 menu.default_tree_manipulators:
627 class: Drupal\Core\Menu\DefaultMenuLinkTreeManipulators
628 arguments: ['@access_manager', '@current_user', '@entity_type.manager']
630 class: Drupal\Core\Menu\MenuActiveTrail
631 arguments: ['@plugin.manager.menu.link', '@current_route_match', '@cache.menu', '@lock']
633 - { name: needs_destruction }
634 menu.parent_form_selector:
635 class: Drupal\Core\Menu\MenuParentFormSelector
636 arguments: ['@menu.link_tree', '@entity.manager', '@string_translation']
637 plugin.manager.menu.local_action:
638 class: Drupal\Core\Menu\LocalActionManager
639 arguments: ['@controller_resolver', '@request_stack', '@current_route_match', '@router.route_provider', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user']
640 plugin.manager.menu.local_task:
641 class: Drupal\Core\Menu\LocalTaskManager
642 arguments: ['@controller_resolver', '@request_stack', '@current_route_match', '@router.route_provider', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user']
643 plugin.manager.menu.contextual_link:
644 class: Drupal\Core\Menu\ContextualLinkManager
645 arguments: ['@controller_resolver', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user', '@request_stack']
646 plugin.manager.display_variant:
647 class: Drupal\Core\Display\VariantManager
648 parent: default_plugin_manager
649 plugin.manager.queue_worker:
650 class: Drupal\Core\Queue\QueueWorkerManager
651 parent: default_plugin_manager
652 plugin.cache_clearer:
653 class: Drupal\Core\Plugin\CachedDiscoveryClearer
655 paramconverter.menu_link:
656 class: Drupal\Core\ParamConverter\MenuLinkPluginConverter
658 - { name: paramconverter }
659 arguments: ['@plugin.manager.menu.link']
662 class: Drupal\Core\Menu\MenuTreeStorage
663 arguments: ['@database', '@cache.menu', '@cache_tags.invalidator', 'menu_tree']
664 public: false # Private to plugin.manager.menu.link and menu.link_tree
666 - { name: backend_overridable }
667 menu_link.static.overrides:
668 class: Drupal\Core\Menu\StaticMenuLinkOverrides
669 arguments: ['@config.factory']
671 class: Symfony\Component\HttpFoundation\RequestStack
675 class: Drupal\Core\Routing\CurrentRouteMatch
676 arguments: ['@request_stack']
678 class: Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher
679 arguments: ['@service_container']
682 factory: app.root.factory:get
684 - { name: parameter_service }
686 class: Drupal\Core\AppRootFactory
687 arguments: ['@kernel']
691 factory: site.path.factory:get
693 - { name: parameter_service }
695 class: Drupal\Core\SitePathFactory
696 arguments: ['@kernel']
699 class: Drupal\Core\Controller\ControllerResolver
700 arguments: ['@psr7.http_message_factory', '@class_resolver']
702 class: Drupal\Core\DependencyInjection\ClassResolver
704 - [setContainer, ['@service_container']]
706 class: Drupal\Core\Controller\TitleResolver
707 arguments: ['@controller_resolver', '@string_translation']
709 class: Stack\StackedHttpKernel
711 class: Symfony\Component\HttpKernel\HttpKernel
712 arguments: ['@event_dispatcher', '@controller_resolver', '@request_stack']
713 http_middleware.negotiation:
714 class: Drupal\Core\StackMiddleware\NegotiationMiddleware
716 - { name: http_middleware, priority: 400 }
717 http_middleware.reverse_proxy:
718 class: Drupal\Core\StackMiddleware\ReverseProxyMiddleware
719 arguments: ['@settings']
721 - { name: http_middleware, priority: 300 }
722 http_middleware.kernel_pre_handle:
723 class: Drupal\Core\StackMiddleware\KernelPreHandle
724 arguments: ['@kernel']
726 - { name: http_middleware, priority: 100 }
727 http_middleware.session:
728 class: Drupal\Core\StackMiddleware\Session
730 - { name: http_middleware, priority: 50 }
732 - [setContainer, ['@service_container']]
733 http_middleware.cors:
734 class: Asm89\Stack\Cors
735 arguments: ['%cors.config%']
737 - { name: http_middleware, priority: 250 }
738 psr7.http_foundation_factory:
739 class: Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory
740 psr7.http_message_factory:
741 class: Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory
743 class: Drupal\Core\Language\LanguageManager
744 arguments: ['@language.default']
745 language.current_language_context:
746 class: Drupal\Core\Language\ContextProvider\CurrentLanguageContext
747 arguments: ['@language_manager']
749 - { name: 'context_provider' }
751 class: Drupal\Core\Language\LanguageDefault
752 arguments: ['%language.default_values%']
753 string_translator.custom_strings:
754 class: Drupal\Core\StringTranslation\Translator\CustomStrings
755 arguments: ['@settings']
757 - { name: string_translator, priority: 30 }
759 class: Drupal\Core\StringTranslation\TranslationManager
760 arguments: ['@language.default']
762 - { name: service_collector, tag: string_translator, call: addTranslator }
764 class: Drupal\Core\Database\Connection
765 factory: Drupal\Core\Database\Database::getConnection
768 class: Drupal\Core\TypedData\TypedDataManager
769 arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@class_resolver']
771 - [setValidationConstraintManager, ['@validation.constraint']]
773 - { name: plugin_manager_cache_clear }
774 validation.constraint:
775 class: Drupal\Core\Validation\ConstraintManager
776 parent: default_plugin_manager
778 - { name: plugin_manager_cache_clear }
780 class: Drupal\Core\Lock\DatabaseLockBackend
781 arguments: ['@database']
783 - { name: backend_overridable }
786 class: Drupal\Core\Lock\PersistentDatabaseLockBackend
787 arguments: ['@database']
789 - { name: backend_overridable }
791 router.request_context:
792 class: Drupal\Core\Routing\RequestContext
796 - [fromRequestStack, ['@request_stack']]
797 router.admin_context:
798 class: Drupal\Core\Routing\AdminContext
799 arguments: ['@current_route_match']
800 router.route_provider:
801 class: Drupal\Core\Routing\RouteProvider
802 arguments: ['@database', '@state', '@path.current', '@cache.data', '@path_processor_manager', '@cache_tags.invalidator']
804 - { name: event_subscriber }
805 - { name: backend_overridable }
806 router.route_provider.lazy_builder:
807 class: Drupal\Core\Routing\RouteProviderLazyBuilder
808 arguments: ['@router.route_provider', '@router.builder']
810 - { name: event_subscriber }
811 router.route_preloader:
812 class: Drupal\Core\Routing\RoutePreloader
813 arguments: ['@router.route_provider', '@state', '@cache.bootstrap']
815 - { name: 'event_subscriber' }
816 router.matcher.final_matcher:
817 class: Drupal\Core\Routing\UrlMatcher
818 arguments: ['@path.current']
819 deprecated: The "%service_id%" service is deprecated. You should use the 'router.no_access_checks' service instead.
821 class: Symfony\Cmf\Component\Routing\NestedMatcher\NestedMatcher
822 arguments: ['@router.route_provider']
824 - [setFinalMatcher, ['@router.matcher.final_matcher']]
826 - { name: service_collector, tag: non_lazy_route_filter, call: addRouteFilter }
827 deprecated: The "%service_id%" service is deprecated. You should use the 'router.no_access_checks' service instead.
828 route_filter.lazy_collector:
829 class: Drupal\Core\Routing\LazyRouteFilter
831 - { name: non_lazy_route_filter }
832 parent: container.trait
833 route_filter_subscriber:
834 class: Drupal\Core\EventSubscriber\RouteFilterSubscriber
835 arguments: ['@route_filter.lazy_collector']
837 - { name: event_subscriber }
838 url_generator.non_bubbling:
839 class: Drupal\Core\Routing\UrlGenerator
840 arguments: ['@router.route_provider', '@path_processor_manager', '@route_processor_manager', '@request_stack', '%filter_protocols%']
843 - [setContext, ['@?router.request_context']]
845 class: Drupal\Core\Render\MetadataBubblingUrlGenerator
846 arguments: ['@url_generator.non_bubbling', '@renderer']
848 - [setContext, ['@?router.request_context']]
849 redirect.destination:
850 class: Drupal\Core\Routing\RedirectDestination
851 arguments: ['@request_stack', '@url_generator']
852 unrouted_url_assembler:
853 class: Drupal\Core\Utility\UnroutedUrlAssembler
854 arguments: ['@request_stack', '@path_processor_manager', '%filter_protocols%']
856 class: Drupal\Core\Utility\LinkGenerator
857 arguments: ['@url_generator', '@module_handler', '@renderer']
859 class: Drupal\Core\Routing\AccessAwareRouter
860 arguments: ['@router.no_access_checks', '@access_manager', '@current_user']
862 class: Symfony\Cmf\Component\Routing\DynamicRouter
863 arguments: ['@router.request_context', '@router.matcher', '@url_generator']
865 - { name: service_collector, tag: non_lazy_route_enhancer, call: addRouteEnhancer }
866 deprecated: The "%service_id%" service is deprecated. You should use the 'router.no_access_checks' service instead.
867 router.no_access_checks:
868 class: \Drupal\Core\Routing\Router
869 arguments: ['@router.route_provider', '@path.current', '@url_generator']
871 - { name: service_collector, tag: non_lazy_route_enhancer, call: addRouteEnhancer }
872 - { name: service_collector, tag: non_lazy_route_filter, call: addRouteFilter }
874 - [setContext, ['@router.request_context']]
875 router.path_roots_subscriber:
876 class: Drupal\Core\EventSubscriber\PathRootsSubscriber
877 arguments: ['@state']
879 - { name: event_subscriber }
881 class: Drupal\Core\Entity\Query\QueryFactory
882 arguments: ['@entity.manager']
884 - [setContainer, ['@service_container']]
886 class: Drupal\Core\Config\Entity\Query\QueryFactory
887 arguments: ['@config.factory', '@keyvalue', '@config.manager']
889 - { name: event_subscriber }
891 class: Drupal\Core\Entity\Query\Sql\QueryFactory
892 arguments: ['@database']
894 - { name: backend_overridable }
895 pgsql.entity.query.sql:
896 class: Drupal\Core\Entity\Query\Sql\pgsql\QueryFactory
897 arguments: ['@database']
899 class: Drupal\Core\Entity\Query\Null\QueryFactory
900 entity.query.keyvalue:
901 class: Drupal\Core\Entity\KeyValueStore\Query\QueryFactory
902 arguments: ['@keyvalue']
904 class: Drupal\Core\Routing\MatcherDumper
905 arguments: ['@database', '@state']
907 - { name: backend_overridable }
910 class: Drupal\Core\Routing\RouteBuilder
911 arguments: ['@router.dumper', '@lock', '@event_dispatcher', '@module_handler', '@controller_resolver', '@access_manager.check_provider']
914 - { name: needs_destruction }
915 menu.rebuild_subscriber:
916 class: Drupal\Core\EventSubscriber\MenuRouterRebuildSubscriber
917 arguments: ['@lock', '@plugin.manager.menu.link']
919 - { name: event_subscriber }
921 class: Drupal\Core\Path\AliasStorage
922 arguments: ['@database', '@module_handler']
924 - { name: backend_overridable }
926 class: Drupal\Core\Path\PathMatcher
927 arguments: ['@config.factory', '@current_route_match']
929 class: Drupal\Core\Path\PathValidator
930 arguments: ['@router', '@router.no_access_checks', '@current_user', '@path_processor_manager']
932 # The argument to the hashing service defined in services.yml, to the
933 # constructor of PhpassHashedPassword is the log2 number of iterations for
934 # password stretching.
935 # @todo increase by 1 every Drupal version in order to counteract increases in
936 # the speed and power of computers available to crack the hashes. The current
937 # password hashing method was introduced in Drupal 7 with a log2 count of 15.
939 class: Drupal\Core\Password\PhpassHashedPassword
941 request_format_route_filter:
942 class: Drupal\Core\Routing\RequestFormatRouteFilter
944 - { name: route_filter }
946 class: Drupal\Core\Routing\MethodFilter
948 - { name: route_filter, priority: 1 }
949 content_type_header_matcher:
950 class: Drupal\Core\Routing\ContentTypeHeaderMatcher
952 - { name: route_filter }
953 paramconverter_manager:
954 class: Drupal\Core\ParamConverter\ParamConverterManager
956 - { name: service_collector, tag: paramconverter, call: addConverter }
957 paramconverter_subscriber:
958 class: Drupal\Core\EventSubscriber\ParamConverterSubscriber
960 - { name: event_subscriber }
961 arguments: ['@paramconverter_manager']
962 paramconverter.entity:
963 class: Drupal\Core\ParamConverter\EntityConverter
965 - { name: paramconverter }
966 arguments: ['@entity.manager']
967 paramconverter.entity_revision:
968 class: Drupal\Core\ParamConverter\EntityRevisionParamConverter
970 - { name: paramconverter }
971 arguments: ['@entity_type.manager', '@entity.repository']
972 paramconverter.configentity_admin:
973 class: Drupal\Core\ParamConverter\AdminPathConfigEntityConverter
975 # Use a higher priority than EntityConverter, see the class for details.
976 - { name: paramconverter, priority: 5 }
977 arguments: ['@entity.manager', '@config.factory', '@router.admin_context']
979 route_subscriber.module:
980 class: Drupal\Core\EventSubscriber\ModuleRouteSubscriber
982 - { name: event_subscriber }
983 arguments: ['@module_handler']
984 resolver_manager.entity:
985 class: Drupal\Core\Entity\EntityResolverManager
986 arguments: ['@entity.manager', '@class_resolver']
987 route_subscriber.entity:
988 class: Drupal\Core\EventSubscriber\EntityRouteAlterSubscriber
990 - { name: event_subscriber }
991 arguments: ['@resolver_manager.entity']
992 ajax_response.subscriber:
993 class: Drupal\Core\EventSubscriber\AjaxResponseSubscriber
994 arguments: ['@ajax_response.attachments_processor']
996 - { name: event_subscriber }
997 form_ajax_subscriber:
998 class: Drupal\Core\Form\EventSubscriber\FormAjaxSubscriber
999 arguments: ['@form_ajax_response_builder', '@string_translation']
1001 - { name: event_subscriber }
1002 route_enhancer.lazy_collector:
1003 class: Drupal\Core\Routing\LazyRouteEnhancer
1005 - { name: non_lazy_route_enhancer, priority: 5000 }
1006 parent: container.trait
1007 route_enhancer_subscriber:
1008 class: Drupal\Core\EventSubscriber\RouteEnhancerSubscriber
1009 arguments: ['@route_enhancer.lazy_collector']
1011 - { name: event_subscriber }
1012 route_enhancer.param_conversion:
1013 class: Drupal\Core\Routing\Enhancer\ParamConversionEnhancer
1014 arguments: ['@paramconverter_manager']
1016 - { name: route_enhancer }
1017 - { name: event_subscriber }
1018 route_enhancer.form:
1019 class: Drupal\Core\Routing\Enhancer\FormRouteEnhancer
1021 - { name: route_enhancer }
1022 route_enhancer.entity:
1023 class: Drupal\Core\Entity\Enhancer\EntityRouteEnhancer
1025 - { name: route_enhancer, priority: 20 }
1026 route_enhancer.entity_revision:
1027 class: Drupal\Core\Routing\Enhancer\EntityRevisionRouteEnhancer
1029 - { name: route_enhancer }
1030 route_special_attributes_subscriber:
1031 class: Drupal\Core\EventSubscriber\SpecialAttributesRouteSubscriber
1033 - { name: event_subscriber }
1034 route_http_method_subscriber:
1035 class: Drupal\Core\EventSubscriber\RouteMethodSubscriber
1037 - { name: event_subscriber }
1038 psr_response_view_subscriber:
1039 class: Drupal\Core\EventSubscriber\PsrResponseSubscriber
1040 arguments: ['@psr7.http_foundation_factory']
1042 - { name: event_subscriber }
1044 # Main content view subscriber plus the renderers it uses.
1045 main_content_view_subscriber:
1046 class: Drupal\Core\EventSubscriber\MainContentViewSubscriber
1047 arguments: ['@class_resolver', '@current_route_match', '%main_content_renderers%']
1049 - { name: event_subscriber }
1051 class: Drupal\Core\EventSubscriber\RenderArrayNonHtmlSubscriber
1053 - { name: event_subscriber }
1054 main_content_renderer.html:
1055 class: Drupal\Core\Render\MainContent\HtmlRenderer
1056 arguments: ['@title_resolver', '@plugin.manager.display_variant', '@event_dispatcher', '@module_handler', '@renderer', '@render_cache', '%renderer.config%']
1058 - { name: render.main_content_renderer, format: html }
1059 main_content_renderer.ajax:
1060 class: Drupal\Core\Render\MainContent\AjaxRenderer
1061 arguments: ['@element_info']
1063 - { name: render.main_content_renderer, format: drupal_ajax }
1064 - { name: render.main_content_renderer, format: iframeupload }
1065 main_content_renderer.dialog:
1066 class: Drupal\Core\Render\MainContent\DialogRenderer
1067 arguments: ['@title_resolver']
1069 - { name: render.main_content_renderer, format: drupal_dialog }
1070 main_content_renderer.modal:
1071 class: Drupal\Core\Render\MainContent\ModalRenderer
1072 arguments: ['@title_resolver']
1074 - { name: render.main_content_renderer, format: drupal_modal }
1076 class: Drupal\Core\Controller\HtmlFormController
1077 arguments: ['@controller_resolver', '@form_builder', '@class_resolver']
1078 controller.entity_form:
1079 class: Drupal\Core\Entity\HtmlEntityFormController
1080 arguments: ['@controller_resolver', '@form_builder', '@entity.manager']
1081 form_ajax_response_builder:
1082 class: Drupal\Core\Form\FormAjaxResponseBuilder
1083 arguments: ['@main_content_renderer.ajax', '@current_route_match']
1085 class: Symfony\Component\HttpKernel\EventListener\RouterListener
1087 - { name: event_subscriber }
1088 arguments: ['@router', '@request_stack', '@router.request_context', NULL]
1089 options_request_listener:
1090 class: Drupal\Core\EventSubscriber\OptionsRequestSubscriber
1091 arguments: ['@router.route_provider']
1093 - { name: event_subscriber }
1094 bare_html_page_renderer:
1095 class: Drupal\Core\Render\BareHtmlPageRenderer
1096 arguments: ['@renderer', '@html_response.attachments_processor']
1099 class: Drupal\Core\PrivateKey
1100 arguments: ['@state']
1102 class: Drupal\Core\Access\CsrfTokenGenerator
1103 arguments: ['@private_key', '@session_manager.metadata_bag']
1104 access_arguments_resolver_factory:
1105 class: Drupal\Core\Access\AccessArgumentsResolverFactory
1107 class: Drupal\Core\Access\AccessManager
1108 arguments: ['@router.route_provider', '@paramconverter_manager', '@access_arguments_resolver_factory', '@current_user', '@access_manager.check_provider']
1109 access_manager.check_provider:
1110 class: Drupal\Core\Access\CheckProvider
1112 - [setContainer, ['@service_container']]
1114 access_check.default:
1115 class: Drupal\Core\Access\DefaultAccessCheck
1117 - { name: access_check, applies_to: _access }
1118 access_check.entity:
1119 class: Drupal\Core\Entity\EntityAccessCheck
1121 - { name: access_check, applies_to: _entity_access }
1122 access_check.entity_create:
1123 class: Drupal\Core\Entity\EntityCreateAccessCheck
1124 arguments: ['@entity.manager']
1126 - { name: access_check, applies_to: _entity_create_access }
1127 access_check.entity_create_any:
1128 class: Drupal\Core\Entity\EntityCreateAnyAccessCheck
1129 arguments: ['@entity_type.manager', '@entity_type.bundle.info']
1131 - { name: access_check, applies_to: _entity_create_any_access }
1133 class: Drupal\Core\Theme\ThemeAccessCheck
1134 arguments: ['@theme_handler']
1136 - { name: access_check, applies_to: _access_theme }
1137 access_check.custom:
1138 class: Drupal\Core\Access\CustomAccessCheck
1139 arguments: ['@controller_resolver', '@access_arguments_resolver_factory']
1141 - { name: access_check, applies_to: _custom_access }
1143 class: Drupal\Core\Access\CsrfAccessCheck
1145 - { name: access_check, applies_to: _csrf_token, needs_incoming_request: TRUE }
1146 arguments: ['@csrf_token']
1147 access_check.header.csrf:
1148 class: Drupal\Core\Access\CsrfRequestHeaderAccessCheck
1149 arguments: ['@session_configuration', '@csrf_token']
1151 - { name: access_check, needs_incoming_request: TRUE }
1153 class: Drupal\Core\Site\MaintenanceMode
1154 arguments: ['@state', '@current_user']
1155 maintenance_mode_subscriber:
1156 class: Drupal\Core\EventSubscriber\MaintenanceModeSubscriber
1157 arguments: ['@maintenance_mode', '@config.factory', '@string_translation', '@url_generator', '@current_user', '@bare_html_page_renderer']
1159 - { name: event_subscriber }
1161 class: Drupal\Core\EventSubscriber\PathSubscriber
1163 - { name: event_subscriber }
1164 arguments: ['@path.alias_manager', '@path.current']
1165 route_access_response_subscriber:
1166 class: Drupal\Core\EventSubscriber\RouteAccessResponseSubscriber
1168 - { name: event_subscriber }
1169 client_error_response_subscriber:
1170 class: Drupal\Core\EventSubscriber\ClientErrorResponseSubscriber
1172 - { name: event_subscriber }
1173 anonymous_user_response_subscriber:
1174 class: Drupal\Core\EventSubscriber\AnonymousUserResponseSubscriber
1176 - { name: event_subscriber }
1177 arguments: ['@current_user']
1178 ajax_response.attachments_processor:
1179 class: Drupal\Core\Ajax\AjaxResponseAttachmentsProcessor
1181 arguments: ['@asset.resolver', '@config.factory', '@asset.css.collection_renderer', '@asset.js.collection_renderer', '@request_stack', '@renderer', '@module_handler']
1182 html_response.attachments_processor:
1183 class: Drupal\Core\Render\HtmlResponseAttachmentsProcessor
1185 arguments: ['@asset.resolver', '@config.factory', '@asset.css.collection_renderer', '@asset.js.collection_renderer', '@request_stack', '@renderer', '@module_handler']
1186 html_response.subscriber:
1187 class: Drupal\Core\EventSubscriber\HtmlResponseSubscriber
1189 - { name: event_subscriber }
1190 arguments: ['@html_response.attachments_processor']
1191 finish_response_subscriber:
1192 class: Drupal\Core\EventSubscriber\FinishResponseSubscriber
1194 - { name: event_subscriber }
1195 arguments: ['@language_manager', '@config.factory', '@page_cache_request_policy', '@page_cache_response_policy', '@cache_contexts_manager', '%http.response.debug_cacheability_headers%']
1196 response_generator_subscriber:
1197 class: Drupal\Core\EventSubscriber\ResponseGeneratorSubscriber
1199 - { name: event_subscriber }
1200 redirect_response_subscriber:
1201 class: Drupal\Core\EventSubscriber\RedirectResponseSubscriber
1202 arguments: ['@unrouted_url_assembler', '@router.request_context']
1204 - { name: event_subscriber }
1205 redirect_leading_slashes_subscriber:
1206 class: Drupal\Core\EventSubscriber\RedirectLeadingSlashesSubscriber
1208 - { name: event_subscriber }
1209 request_close_subscriber:
1210 class: Drupal\Core\EventSubscriber\RequestCloseSubscriber
1212 - { name: event_subscriber }
1213 arguments: ['@module_handler']
1214 config_import_subscriber:
1215 class: Drupal\Core\EventSubscriber\ConfigImportSubscriber
1217 - { name: event_subscriber }
1218 arguments: ['@theme_handler']
1219 config_snapshot_subscriber:
1220 class: Drupal\Core\EventSubscriber\ConfigSnapshotSubscriber
1222 - { name: event_subscriber }
1223 arguments: ['@config.manager', '@config.storage', '@config.storage.snapshot']
1224 exception.needs_installer:
1225 class: Drupal\Core\EventSubscriber\ExceptionDetectNeedsInstallSubscriber
1226 arguments: ['@database']
1228 - { name: event_subscriber }
1229 exception.default_json:
1230 class: Drupal\Core\EventSubscriber\ExceptionJsonSubscriber
1232 - { name: event_subscriber }
1233 exception.default_html:
1234 class: Drupal\Core\EventSubscriber\DefaultExceptionHtmlSubscriber
1236 - { name: event_subscriber }
1237 arguments: ['@http_kernel', '@logger.channel.php', '@redirect.destination', '@router.no_access_checks']
1239 class: Drupal\Core\EventSubscriber\FinalExceptionSubscriber
1241 - { name: event_subscriber }
1242 arguments: ['@config.factory']
1244 class: Drupal\Core\EventSubscriber\ExceptionLoggingSubscriber
1246 - { name: event_subscriber }
1247 arguments: ['@logger.factory']
1248 exception.custom_page_html:
1249 class: Drupal\Core\EventSubscriber\CustomPageExceptionHtmlSubscriber
1251 - { name: event_subscriber }
1252 arguments: ['@config.factory', '@http_kernel', '@logger.channel.php', '@redirect.destination', '@router.no_access_checks', '@access_manager']
1253 exception.fast_404_html:
1254 class: Drupal\Core\EventSubscriber\Fast404ExceptionHtmlSubscriber
1256 - { name: event_subscriber }
1257 arguments: ['@config.factory', '@http_kernel']
1258 exception.test_site:
1259 class: Drupal\Core\EventSubscriber\ExceptionTestSiteSubscriber
1261 - { name: event_subscriber }
1262 exception.enforced_form_response:
1263 class: Drupal\Core\EventSubscriber\EnforcedFormResponseSubscriber
1265 - { name: event_subscriber }
1266 route_processor_manager:
1267 class: Drupal\Core\RouteProcessor\RouteProcessorManager
1269 - { name: service_collector, tag: route_processor_outbound, call: addOutbound }
1270 path_processor_manager:
1271 class: Drupal\Core\PathProcessor\PathProcessorManager
1273 - { name: service_collector, tag: path_processor_inbound, call: addInbound }
1274 - { name: service_collector, tag: path_processor_outbound, call: addOutbound }
1275 path_processor_decode:
1276 class: Drupal\Core\PathProcessor\PathProcessorDecode
1278 - { name: path_processor_inbound, priority: 1000 }
1279 path_processor_front:
1280 class: Drupal\Core\PathProcessor\PathProcessorFront
1282 - { name: path_processor_inbound, priority: 200 }
1283 - { name: path_processor_outbound, priority: 200 }
1284 arguments: ['@config.factory']
1285 route_processor_current:
1286 class: Drupal\Core\RouteProcessor\RouteProcessorCurrent
1287 arguments: ['@current_route_match']
1289 - { name: route_processor_outbound, priority: 200 }
1290 path_processor_alias:
1291 class: Drupal\Core\PathProcessor\PathProcessorAlias
1293 - { name: path_processor_inbound, priority: 100 }
1294 - { name: path_processor_outbound, priority: 300 }
1295 arguments: ['@path.alias_manager']
1296 route_processor_csrf:
1297 class: Drupal\Core\Access\RouteProcessorCsrf
1299 - { name: route_processor_outbound }
1300 arguments: ['@csrf_token']
1302 class: Drupal\Core\Transliteration\PhpTransliteration
1303 arguments: [null, '@module_handler']
1305 class: Drupal\Core\Flood\DatabaseBackend
1306 arguments: ['@database', '@request_stack']
1308 - { name: backend_overridable }
1309 plugin.manager.mail:
1310 class: Drupal\Core\Mail\MailManager
1311 arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@config.factory', '@logger.factory', '@string_translation', '@renderer']
1312 plugin.manager.condition:
1313 class: Drupal\Core\Condition\ConditionManager
1314 parent: default_plugin_manager
1315 plugin.manager.element_info:
1316 class: Drupal\Core\Render\ElementInfoManager
1317 arguments: ['@container.namespaces', '@cache.discovery', '@cache_tags.invalidator', '@module_handler', '@theme.manager']
1318 stream_wrapper_manager:
1319 class: Drupal\Core\StreamWrapper\StreamWrapperManager
1321 - [setContainer, ['@service_container']]
1322 stream_wrapper.public:
1323 class: Drupal\Core\StreamWrapper\PublicStream
1325 - { name: stream_wrapper, scheme: public }
1326 stream_wrapper.temporary:
1327 class: Drupal\Core\StreamWrapper\TemporaryStream
1329 - { name: stream_wrapper, scheme: temporary }
1330 kernel_destruct_subscriber:
1331 class: Drupal\Core\EventSubscriber\KernelDestructionSubscriber
1333 - { name: event_subscriber }
1335 - [setContainer, ['@service_container']]
1336 image.toolkit.manager:
1337 class: Drupal\Core\ImageToolkit\ImageToolkitManager
1338 arguments: ['@config.factory']
1339 parent: default_plugin_manager
1341 - { name: plugin_manager_cache_clear }
1342 image.toolkit.operation.manager:
1343 class: Drupal\Core\ImageToolkit\ImageToolkitOperationManager
1344 arguments: ['@logger.channel.image', '@image.toolkit.manager']
1345 parent: default_plugin_manager
1347 - { name: plugin_manager_cache_clear }
1349 class: Drupal\Core\Image\ImageFactory
1350 arguments: ['@image.toolkit.manager']
1352 class: Drupal\Core\Breadcrumb\BreadcrumbManager
1353 arguments: ['@module_handler']
1355 - { name: service_collector, tag: breadcrumb_builder, call: addBuilder }
1357 class: Drupal\Core\Utility\Token
1358 arguments: ['@module_handler', '@cache.default', '@language_manager', '@cache_tags.invalidator', '@renderer']
1360 class: Drupal\Core\Batch\BatchStorage
1361 arguments: ['@database', '@session', '@csrf_token']
1363 - { name: backend_overridable }
1365 replica_database_ignore__subscriber:
1366 class: Drupal\Core\EventSubscriber\ReplicaDatabaseIgnoreSubscriber
1368 - {name: event_subscriber}
1370 class: Drupal\Core\Locale\CountryManager
1371 arguments: ['@module_handler']
1373 class: Drupal\Core\Datetime\DateFormatter
1374 arguments: ['@entity.manager', '@language_manager', '@string_translation', '@config.factory', '@request_stack']
1376 class: Drupal\Component\Bridge\ZfExtensionManagerSfContainer
1378 - [setContainer, ['@service_container']]
1379 arguments: ['feed.reader.']
1381 class: Drupal\Component\Bridge\ZfExtensionManagerSfContainer
1383 - [setContainer, ['@service_container']]
1384 arguments: ['feed.writer.']
1385 # Zend Feed reader plugins. Plugin instances should not be shared.
1386 feed.reader.dublincoreentry:
1387 class: Zend\Feed\Reader\Extension\DublinCore\Entry
1389 feed.reader.dublincorefeed:
1390 class: Zend\Feed\Reader\Extension\DublinCore\Feed
1392 feed.reader.contententry:
1393 class: Zend\Feed\Reader\Extension\Content\Entry
1395 feed.reader.atomentry:
1396 class: Zend\Feed\Reader\Extension\Atom\Entry
1398 feed.reader.atomfeed:
1399 class: Zend\Feed\Reader\Extension\Atom\Feed
1401 feed.reader.slashentry:
1402 class: Zend\Feed\Reader\Extension\Slash\Entry
1404 feed.reader.wellformedwebentry:
1405 class: Zend\Feed\Reader\Extension\WellFormedWeb\Entry
1407 feed.reader.threadentry:
1408 class: Zend\Feed\Reader\Extension\Thread\Entry
1410 feed.reader.podcastentry:
1411 class: Zend\Feed\Reader\Extension\Podcast\Entry
1413 feed.reader.podcastfeed:
1414 class: Zend\Feed\Reader\Extension\Podcast\Feed
1416 # Zend Feed writer plugins. Plugins should be set as prototype scope.
1417 feed.writer.atomrendererfeed:
1418 class: Zend\Feed\Writer\Extension\Atom\Renderer\Feed
1420 feed.writer.contentrendererentry:
1421 class: Zend\Feed\Writer\Extension\Content\Renderer\Entry
1423 feed.writer.dublincorerendererentry:
1424 class: Zend\Feed\Writer\Extension\DublinCore\Renderer\Entry
1426 feed.writer.dublincorerendererfeed:
1427 class: Zend\Feed\Writer\Extension\DublinCore\Renderer\Feed
1429 feed.writer.itunesentry:
1430 class: Zend\Feed\Writer\Extension\ITunes\Entry
1432 feed.writer.itunesfeed:
1433 class: Zend\Feed\Writer\Extension\ITunes\Feed
1435 feed.writer.itunesrendererentry:
1436 class: Zend\Feed\Writer\Extension\ITunes\Renderer\Entry
1438 feed.writer.itunesrendererfeed:
1439 class: Zend\Feed\Writer\Extension\ITunes\Renderer\Feed
1441 feed.writer.slashrendererentry:
1442 class: Zend\Feed\Writer\Extension\Slash\Renderer\Entry
1444 feed.writer.threadingrendererentry:
1445 class: Zend\Feed\Writer\Extension\Threading\Renderer\Entry
1447 feed.writer.wellformedwebrendererentry:
1448 class: Zend\Feed\Writer\Extension\WellFormedWeb\Renderer\Entry
1451 class: Drupal\Core\Theme\ThemeManager
1452 arguments: ['@app.root', '@theme.negotiator', '@theme.initialization', '@module_handler']
1454 - [setThemeRegistry, ['@theme.registry']]
1455 theme.initialization:
1456 class: Drupal\Core\Theme\ThemeInitialization
1457 arguments: ['@app.root', '@theme_handler', '@cache.bootstrap', '@module_handler']
1459 class: Drupal\Core\Theme\Registry
1460 arguments: ['@app.root', '@cache.default', '@lock', '@module_handler', '@theme_handler', '@theme.initialization', null, '@cache.bootstrap']
1462 - { name: needs_destruction }
1464 - [setThemeManager, ['@theme.manager']]
1466 class: Drupal\Core\Authentication\AuthenticationManager
1467 arguments: ['@authentication_collector']
1468 authentication_collector:
1469 class: Drupal\Core\Authentication\AuthenticationCollector
1471 - { name: service_collector, tag: authentication_provider, call: addProvider }
1472 authentication_subscriber:
1473 class: Drupal\Core\EventSubscriber\AuthenticationSubscriber
1474 arguments: ['@authentication', '@current_user']
1476 - { name: event_subscriber }
1478 class: Drupal\Core\Session\AccountSwitcher
1479 arguments: ['@current_user', '@session_handler.write_safe']
1480 user_permissions_hash_generator:
1481 class: Drupal\Core\Session\PermissionsHashGenerator
1482 arguments: ['@private_key', '@cache.bootstrap', '@cache.static']
1484 class: Drupal\Core\Session\AccountProxy
1485 session_configuration:
1486 class: Drupal\Core\Session\SessionConfiguration
1487 arguments: ['%session.storage.options%']
1489 class: Symfony\Component\HttpFoundation\Session\Session
1490 arguments: ['@session_manager', '@session.attribute_bag', '@session.flash_bag']
1492 class: Symfony\Component\HttpFoundation\Session\Flash\FlashBag
1494 session.attribute_bag:
1495 class: Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag
1498 alias: session_handler.storage
1499 session_handler.storage:
1500 class: Drupal\Core\Session\SessionHandler
1501 arguments: ['@request_stack', '@database']
1503 - { name: backend_overridable }
1504 session_handler.write_check:
1505 class: Symfony\Component\HttpFoundation\Session\Storage\Handler\WriteCheckSessionHandler
1507 - { name: session_handler_proxy, priority: 100 }
1508 session_handler.write_safe:
1509 class: Drupal\Core\Session\WriteSafeSessionHandler
1511 - { name: session_handler_proxy, priority: 150 }
1513 class: Drupal\Core\Session\SessionManager
1514 arguments: ['@request_stack', '@database', '@session_manager.metadata_bag', '@session_configuration', '@session_handler']
1516 - { name: backend_overridable }
1518 - [setWriteSafeHandler, ['@session_handler.write_safe']]
1519 session_manager.metadata_bag:
1520 class: Drupal\Core\Session\MetadataBag
1521 arguments: ['@settings']
1522 asset.css.collection_renderer:
1523 class: Drupal\Core\Asset\CssCollectionRenderer
1524 arguments: [ '@state' ]
1525 asset.css.collection_optimizer:
1526 class: Drupal\Core\Asset\CssCollectionOptimizer
1527 arguments: [ '@asset.css.collection_grouper', '@asset.css.optimizer', '@asset.css.dumper', '@state' ]
1528 asset.css.optimizer:
1529 class: Drupal\Core\Asset\CssOptimizer
1530 asset.css.collection_grouper:
1531 class: Drupal\Core\Asset\CssCollectionGrouper
1533 class: Drupal\Core\Asset\AssetDumper
1534 asset.js.collection_renderer:
1535 class: Drupal\Core\Asset\JsCollectionRenderer
1536 arguments: [ '@state' ]
1537 asset.js.collection_optimizer:
1538 class: Drupal\Core\Asset\JsCollectionOptimizer
1539 arguments: [ '@asset.js.collection_grouper', '@asset.js.optimizer', '@asset.js.dumper', '@state' ]
1541 class: Drupal\Core\Asset\JsOptimizer
1542 asset.js.collection_grouper:
1543 class: Drupal\Core\Asset\JsCollectionGrouper
1545 class: Drupal\Core\Asset\AssetDumper
1547 class: Drupal\Core\Asset\LibraryDiscovery
1548 arguments: ['@library.discovery.collector']
1549 library.discovery.collector:
1550 class: Drupal\Core\Asset\LibraryDiscoveryCollector
1551 arguments: ['@cache.discovery', '@lock', '@library.discovery.parser', '@theme.manager']
1553 - { name: needs_destruction }
1554 library.discovery.parser:
1555 class: Drupal\Core\Asset\LibraryDiscoveryParser
1556 arguments: ['@app.root', '@module_handler', '@theme.manager']
1557 library.dependency_resolver:
1558 class: Drupal\Core\Asset\LibraryDependencyResolver
1559 arguments: ['@library.discovery']
1561 class: Drupal\Core\Asset\AssetResolver
1562 arguments: ['@library.discovery', '@library.dependency_resolver', '@module_handler', '@theme.manager', '@language_manager', '@cache.data']
1564 class: Drupal\Core\Extension\InfoParser
1566 class: Drupal\Core\Template\TwigEnvironment
1567 arguments: ['@app.root', '@cache.default', '%twig_extension_hash%', '@state', '@twig.loader', '%twig.config%']
1569 - { name: service_collector, tag: 'twig.extension', call: addExtension }
1571 class: Drupal\Core\Template\TwigExtension
1572 arguments: ['@renderer', '@url_generator', '@theme.manager', '@date.formatter']
1574 - { name: twig.extension, priority: 100 }
1575 # @todo Figure out what to do about debugging functions.
1576 # @see https://www.drupal.org/node/1804998
1577 twig.extension.debug:
1578 class: Twig_Extension_Debug
1580 - { name: twig.extension }
1582 class: Twig_Loader_Chain
1585 - { name: service_collector, tag: twig.loader, call: addLoader, required: TRUE }
1586 twig.loader.filesystem:
1587 class: Drupal\Core\Template\Loader\FilesystemLoader
1588 arguments: ['@app.root', '@module_handler', '@theme_handler']
1590 - { name: twig.loader, priority: 100 }
1591 twig.loader.theme_registry:
1592 class: Drupal\Core\Template\Loader\ThemeRegistryLoader
1593 arguments: ['@theme.registry']
1595 - { name: twig.loader, priority: 0 }
1597 class: Drupal\Core\Template\Loader\StringLoader
1599 - { name: twig.loader, priority: -100 }
1601 alias: plugin.manager.element_info
1602 file.mime_type.guesser:
1603 class: Drupal\Core\File\MimeType\MimeTypeGuesser
1604 arguments: ['@stream_wrapper_manager']
1606 - { name: service_collector, tag: mime_type_guesser, call: addGuesser }
1608 file.mime_type.guesser.extension:
1609 class: Drupal\Core\File\MimeType\ExtensionMimeTypeGuesser
1610 arguments: ['@module_handler']
1612 - { name: mime_type_guesser }
1614 # Currently needs to be public as it is called by
1615 # \Drupal\Core\Render\Element\StatusMessages.
1616 # @todo Consider making this service private again after
1617 # https://www.drupal.org/node/2367555 lands.
1618 render_placeholder_generator:
1619 class: Drupal\Core\Render\PlaceholderGenerator
1620 arguments: ['%renderer.config%']
1622 class: Drupal\Core\Render\PlaceholderingRenderCache
1623 arguments: ['@request_stack', '@cache_factory', '@cache_contexts_manager', '@render_placeholder_generator']
1625 class: Drupal\Core\Render\Renderer
1626 arguments: ['@controller_resolver', '@theme.manager', '@plugin.manager.element_info', '@render_placeholder_generator', '@render_cache', '@request_stack', '%renderer.config%']
1627 early_rendering_controller_wrapper_subscriber:
1628 class: Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber
1629 arguments: ['@controller_resolver', '@renderer']
1631 - { name: event_subscriber }
1632 # Placeholder strategies for rendering placeholders.
1633 html_response.placeholder_strategy_subscriber:
1634 class: Drupal\Core\EventSubscriber\HtmlResponsePlaceholderStrategySubscriber
1636 - { name: event_subscriber }
1637 arguments: ['@placeholder_strategy']
1638 placeholder_strategy:
1639 class: Drupal\Core\Render\Placeholder\ChainedPlaceholderStrategy
1641 - { name: service_collector, tag: placeholder_strategy, call: addPlaceholderStrategy }
1642 placeholder_strategy.single_flush:
1643 class: Drupal\Core\Render\Placeholder\SingleFlushStrategy
1645 - { name: placeholder_strategy, priority: -1000 }
1647 class: Egulias\EmailValidator\EmailValidator
1648 update.post_update_registry:
1649 class: Drupal\Core\Update\UpdateRegistry
1650 factory: ['@update.post_update_registry_factory', create]
1651 update.post_update_registry_factory:
1652 class: Drupal\Core\Update\UpdateRegistryFactory
1653 parent: container.trait
1655 class: Drupal\Component\Uuid\Php
1656 response_filter.active_link:
1657 class: Drupal\Core\EventSubscriber\ActiveLinkResponseFilter
1658 arguments: ['@current_user', '@path.current', '@path.matcher', '@language_manager']
1660 - { name: event_subscriber }
1661 response_filter.rss.relative_url:
1662 class: Drupal\Core\EventSubscriber\RssResponseRelativeUrlFilter
1664 - { name: event_subscriber }