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']
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 config.storage.staging:
320 class: Drupal\Core\Config\FileStorage
321 factory: Drupal\Core\Config\FileStorageFactory::getSync
323 alias: config.storage.staging
324 config.storage.snapshot:
325 class: Drupal\Core\Config\DatabaseStorage
326 arguments: ['@database', config_snapshot]
328 - { name: backend_overridable }
329 config.storage.schema:
330 class: Drupal\Core\Config\ExtensionInstallStorage
331 arguments: ['@config.storage', 'config/schema', '', true, '%install_profile%']
333 class: Drupal\Core\Config\TypedConfigManager
334 arguments: ['@config.storage', '@config.storage.schema', '@cache.discovery', '@module_handler']
336 - { name: plugin_manager_cache_clear }
338 class: Drupal\Core\Plugin\Context\ContextHandler
339 arguments: ['@typed_data_manager']
341 class: Drupal\Core\Plugin\Context\LazyContextRepository
342 arguments: ['@service_container']
344 class: Drupal\Core\Cron
345 arguments: ['@module_handler', '@lock', '@queue', '@state', '@account_switcher', '@logger.channel.cron', '@plugin.manager.queue_worker']
348 class: Drupal\Core\Diff\DiffFormatter
349 arguments: ['@config.factory']
351 class: Drupal\Core\Database\Connection
352 factory: Drupal\Core\Database\Database::getConnection
355 class: Drupal\Component\Datetime\Time
356 arguments: ['@request_stack']
358 class: Drupal\Core\File\FileSystem
359 arguments: ['@stream_wrapper_manager', '@settings', '@logger.channel.file']
361 class: Drupal\Core\Form\FormBuilder
362 arguments: ['@form_validator', '@form_submitter', '@form_cache', '@module_handler', '@event_dispatcher', '@request_stack', '@class_resolver', '@element_info', '@theme.manager', '@?csrf_token']
364 class: Drupal\Core\Form\FormValidator
365 arguments: ['@request_stack', '@string_translation', '@csrf_token', '@logger.channel.form', '@form_error_handler']
367 class: Drupal\Core\Form\FormSubmitter
368 arguments: ['@request_stack', '@url_generator']
370 class: Drupal\Core\Form\FormErrorHandler
372 class: Drupal\Core\Form\FormCache
373 arguments: ['@app.root', '@keyvalue.expirable', '@module_handler', '@current_user', '@csrf_token', '@logger.channel.form', '@request_stack', '@page_cache_request_policy']
374 public: false # Private to form_builder
376 class: Drupal\Core\KeyValueStore\KeyValueFactory
377 arguments: ['@service_container', '%factory.keyvalue%']
379 class: Drupal\Core\KeyValueStore\KeyValueDatabaseFactory
380 arguments: ['@serialization.phpserialize', '@database']
382 class: Drupal\Core\KeyValueStore\KeyValueExpirableFactory
383 arguments: ['@service_container', '%factory.keyvalue.expirable%']
384 keyvalue.expirable.database:
385 class: Drupal\Core\KeyValueStore\KeyValueDatabaseExpirableFactory
386 arguments: ['@serialization.phpserialize', '@database']
388 class: Drupal\Core\Logger\LoggerChannelFactory
389 parent: container.trait
391 - { name: service_collector, tag: logger, call: addLogger }
394 class: Drupal\Core\Logger\LoggerChannel
395 factory: logger.factory:get
396 logger.channel.default:
397 parent: logger.channel_base
398 arguments: ['system']
400 parent: logger.channel_base
402 logger.channel.image:
403 parent: logger.channel_base
406 parent: logger.channel_base
409 class: Drupal\Core\Logger\LoggerChannel
410 factory: logger.factory:get
413 parent: logger.channel_base
415 logger.log_message_parser:
416 class: Drupal\Core\Logger\LogMessageParser
419 class: Drupal\Component\Serialization\Json
420 serialization.phpserialize:
421 class: Drupal\Component\Serialization\PhpSerialize
423 class: Drupal\Component\Serialization\Yaml
426 class: Drupal\Core\Site\Settings
427 factory: Drupal\Core\Site\Settings::getInstance
429 class: Drupal\Core\State\State
430 arguments: ['@keyvalue', '@cache.bootstrap', '@lock']
432 - { name: needs_destruction }
434 class: Drupal\Core\Queue\QueueFactory
435 arguments: ['@settings']
437 - [setContainer, ['@service_container']]
439 class: Drupal\Core\Queue\QueueDatabaseFactory
440 arguments: ['@database']
441 path.alias_whitelist:
442 class: Drupal\Core\Path\AliasWhitelist
444 - { name: needs_destruction }
445 arguments: [path_alias_whitelist, '@cache.bootstrap', '@lock', '@state', '@path.alias_storage']
447 class: Drupal\Core\Path\AliasManager
448 arguments: ['@path.alias_storage', '@path.alias_whitelist', '@language_manager', '@cache.data']
450 class: Drupal\Core\Path\CurrentPathStack
451 arguments: ['@request_stack']
453 class: GuzzleHttp\HandlerStack
455 factory: GuzzleHttp\HandlerStack::create
456 configurator: ['@http_handler_stack_configurator', configure]
457 http_handler_stack_configurator:
458 class: Drupal\Core\Http\HandlerStackConfigurator
460 arguments: ['@service_container']
462 class: GuzzleHttp\Client
463 factory: http_client_factory:fromOptions
465 class: Drupal\Core\Http\ClientFactory
466 arguments: ['@http_handler_stack']
467 plugin.manager.link_relation_type:
468 class: \Drupal\Core\Http\LinkRelationTypeManager
469 arguments: ['@app.root', '@module_handler', '@cache.discovery']
471 class: Drupal\Core\Theme\ThemeNegotiator
472 arguments: ['@access_check.theme']
474 - { name: service_collector, tag: theme_negotiator, call: addNegotiator }
475 theme.negotiator.default:
476 class: Drupal\Core\Theme\DefaultNegotiator
477 arguments: ['@config.factory']
479 - { name: theme_negotiator, priority: -100 }
480 theme.negotiator.ajax_base_page:
481 class: Drupal\Core\Theme\AjaxBasePageNegotiator
482 arguments: ['@csrf_token', '@config.factory', '@request_stack']
484 - { name: theme_negotiator, priority: 1000 }
485 container.namespaces:
487 arguments: [ '%container.namespaces%' ]
491 - [setContainer, ['@service_container']]
492 default_plugin_manager:
494 arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
496 class: Drupal\Core\Extension\ModuleHandler
497 arguments: ['@app.root', '%container.modules%', '@cache.bootstrap']
499 class: Drupal\Core\Extension\ModuleInstaller
501 - { name: service_collector, tag: 'module_install.uninstall_validator', call: addUninstallValidator }
502 arguments: ['@app.root', '@module_handler', '@kernel', '@router.builder']
504 content_uninstall_validator:
505 class: Drupal\Core\Entity\ContentUninstallValidator
507 - { name: module_install.uninstall_validator }
508 arguments: ['@entity.manager', '@string_translation']
510 field_uninstall_validator:
511 class: Drupal\Core\Field\FieldModuleUninstallValidator
513 - { name: module_install.uninstall_validator }
514 arguments: ['@entity.manager', '@string_translation']
516 required_module_uninstall_validator:
517 class: Drupal\Core\Extension\RequiredModuleUninstallValidator
519 - { name: module_install.uninstall_validator }
520 arguments: ['@string_translation']
523 class: Drupal\Core\Extension\ThemeHandler
524 arguments: ['@app.root', '@config.factory', '@module_handler', '@state', '@info_parser']
526 class: Drupal\Core\Extension\ThemeInstaller
527 arguments: ['@theme_handler', '@config.factory', '@config.installer', '@module_handler', '@config.manager', '@asset.css.collection_optimizer', '@router.builder', '@logger.channel.default', '@state']
528 # @deprecated in Drupal 8.0.x and will be removed before 9.0.0. Use the other
529 # entity* services instead.
531 # We cannot set the deprecated property here because many test cases still
532 # rely on this service and they would fail with deprecation warnings.
533 class: Drupal\Core\Entity\EntityManager
534 parent: container.trait
535 # @todo Remove this tag in https://www.drupal.org/node/2549143.
537 - { name: plugin_manager_cache_clear }
539 class: Drupal\Core\Entity\EntityTypeManager
540 arguments: ['@container.namespaces', '@module_handler', '@cache.discovery', '@string_translation', '@class_resolver']
541 parent: container.trait
543 - { name: plugin_manager_cache_clear }
544 entity_type.repository:
545 class: Drupal\Core\Entity\EntityTypeRepository
546 arguments: ['@entity_type.manager']
547 entity_type.bundle.info:
548 class: Drupal\Core\Entity\EntityTypeBundleInfo
549 arguments: ['@entity_type.manager', '@language_manager', '@module_handler', '@typed_data_manager', '@cache.discovery']
551 class: Drupal\Core\Entity\EntityRepository
552 arguments: ['@entity_type.manager', '@language_manager']
553 entity_display.repository:
554 class: Drupal\Core\Entity\EntityDisplayRepository
555 arguments: ['@entity_type.manager', '@module_handler', '@cache.discovery', '@language_manager']
556 entity_field.manager:
557 class: Drupal\Core\Entity\EntityFieldManager
558 arguments: ['@entity_type.manager', '@entity_type.bundle.info', '@entity_display.repository', '@typed_data_manager', '@language_manager', '@keyvalue', '@module_handler', '@cache.discovery']
559 entity_type.listener:
560 class: Drupal\Core\Entity\EntityTypeListener
561 arguments: ['@entity_type.manager', '@entity_field.manager', '@event_dispatcher', '@entity.last_installed_schema.repository']
562 entity_bundle.listener:
563 class: Drupal\Core\Entity\EntityBundleListener
564 arguments: ['@entity_type.manager', '@entity_type.bundle.info', '@entity_field.manager', '@module_handler']
565 entity_route_subscriber:
566 class: Drupal\Core\EventSubscriber\EntityRouteProviderSubscriber
567 arguments: ['@entity.manager']
569 - { name: event_subscriber }
570 entity.definition_update_manager:
571 class: Drupal\Core\Entity\EntityDefinitionUpdateManager
572 arguments: ['@entity.manager']
573 entity.last_installed_schema.repository:
574 class: Drupal\Core\Entity\EntityLastInstalledSchemaRepository
575 arguments: ['@keyvalue']
576 field_storage_definition.listener:
577 class: Drupal\Core\Field\FieldStorageDefinitionListener
578 arguments: ['@entity_type.manager', '@event_dispatcher', '@entity.last_installed_schema.repository', '@entity_field.manager']
579 field_definition.listener:
580 class: Drupal\Core\Field\FieldDefinitionListener
581 arguments: ['@entity_type.manager', '@entity_field.manager', '@keyvalue', '@cache.discovery']
583 class: Drupal\Core\Entity\EntityFormBuilder
584 arguments: ['@entity.manager', '@form_builder']
585 entity.bundle_config_import_validator:
586 class: Drupal\Core\Entity\Event\BundleConfigImportValidate
587 arguments: ['@config.manager', '@entity.manager']
589 - { name: event_subscriber }
590 entity.autocomplete_matcher:
591 class: Drupal\Core\Entity\EntityAutocompleteMatcher
592 arguments: ['@plugin.manager.entity_reference_selection']
594 class: Drupal\Core\Plugin\PluginFormFactory
595 arguments: ['@class_resolver']
596 plugin.manager.entity_reference_selection:
597 class: Drupal\Core\Entity\EntityReferenceSelection\SelectionPluginManager
598 parent: default_plugin_manager
599 plugin.manager.block:
600 class: Drupal\Core\Block\BlockManager
601 parent: default_plugin_manager
602 plugin.manager.field.field_type:
603 class: Drupal\Core\Field\FieldTypePluginManager
604 arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@typed_data_manager']
605 plugin.manager.field.widget:
606 class: Drupal\Core\Field\WidgetPluginManager
607 arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@plugin.manager.field.field_type']
608 plugin.manager.field.formatter:
609 class: Drupal\Core\Field\FormatterPluginManager
610 arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@plugin.manager.field.field_type']
611 plugin.manager.archiver:
612 class: Drupal\Core\Archiver\ArchiverManager
613 parent: default_plugin_manager
614 plugin.manager.action:
615 class: Drupal\Core\Action\ActionManager
616 arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
617 plugin.manager.menu.link:
618 class: Drupal\Core\Menu\MenuLinkManager
619 arguments: ['@menu.tree_storage', '@menu_link.static.overrides', '@module_handler']
621 class: Drupal\Core\Menu\MenuLinkTree
622 arguments: ['@menu.tree_storage', '@plugin.manager.menu.link', '@router.route_provider', '@menu.active_trail', '@controller_resolver']
623 menu.default_tree_manipulators:
624 class: Drupal\Core\Menu\DefaultMenuLinkTreeManipulators
625 arguments: ['@access_manager', '@current_user', '@entity_type.manager']
627 class: Drupal\Core\Menu\MenuActiveTrail
628 arguments: ['@plugin.manager.menu.link', '@current_route_match', '@cache.menu', '@lock']
630 - { name: needs_destruction }
631 menu.parent_form_selector:
632 class: Drupal\Core\Menu\MenuParentFormSelector
633 arguments: ['@menu.link_tree', '@entity.manager', '@string_translation']
634 plugin.manager.menu.local_action:
635 class: Drupal\Core\Menu\LocalActionManager
636 arguments: ['@controller_resolver', '@request_stack', '@current_route_match', '@router.route_provider', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user']
637 plugin.manager.menu.local_task:
638 class: Drupal\Core\Menu\LocalTaskManager
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.contextual_link:
641 class: Drupal\Core\Menu\ContextualLinkManager
642 arguments: ['@controller_resolver', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user', '@request_stack']
643 plugin.manager.display_variant:
644 class: Drupal\Core\Display\VariantManager
645 parent: default_plugin_manager
646 plugin.manager.queue_worker:
647 class: Drupal\Core\Queue\QueueWorkerManager
648 parent: default_plugin_manager
649 plugin.cache_clearer:
650 class: Drupal\Core\Plugin\CachedDiscoveryClearer
652 paramconverter.menu_link:
653 class: Drupal\Core\ParamConverter\MenuLinkPluginConverter
655 - { name: paramconverter }
656 arguments: ['@plugin.manager.menu.link']
659 class: Drupal\Core\Menu\MenuTreeStorage
660 arguments: ['@database', '@cache.menu', '@cache_tags.invalidator', 'menu_tree']
661 public: false # Private to plugin.manager.menu.link and menu.link_tree
663 - { name: backend_overridable }
664 menu_link.static.overrides:
665 class: Drupal\Core\Menu\StaticMenuLinkOverrides
666 arguments: ['@config.factory']
668 class: Symfony\Component\HttpFoundation\RequestStack
672 class: Drupal\Core\Routing\CurrentRouteMatch
673 arguments: ['@request_stack']
675 class: Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher
676 arguments: ['@service_container']
679 factory: app.root.factory:get
681 - { name: parameter_service }
683 class: Drupal\Core\AppRootFactory
684 arguments: ['@kernel']
688 factory: site.path.factory:get
690 - { name: parameter_service }
692 class: Drupal\Core\SitePathFactory
693 arguments: ['@kernel']
696 class: Drupal\Core\Controller\ControllerResolver
697 arguments: ['@psr7.http_message_factory', '@class_resolver']
699 class: Drupal\Core\DependencyInjection\ClassResolver
701 - [setContainer, ['@service_container']]
703 class: Drupal\Core\Controller\TitleResolver
704 arguments: ['@controller_resolver', '@string_translation']
706 class: Stack\StackedHttpKernel
708 class: Symfony\Component\HttpKernel\HttpKernel
709 arguments: ['@event_dispatcher', '@controller_resolver', '@request_stack']
710 http_middleware.negotiation:
711 class: Drupal\Core\StackMiddleware\NegotiationMiddleware
713 - { name: http_middleware, priority: 400 }
714 http_middleware.reverse_proxy:
715 class: Drupal\Core\StackMiddleware\ReverseProxyMiddleware
716 arguments: ['@settings']
718 - { name: http_middleware, priority: 300 }
719 http_middleware.kernel_pre_handle:
720 class: Drupal\Core\StackMiddleware\KernelPreHandle
721 arguments: ['@kernel']
723 - { name: http_middleware, priority: 100 }
724 http_middleware.session:
725 class: Drupal\Core\StackMiddleware\Session
727 - { name: http_middleware, priority: 50 }
729 - [setContainer, ['@service_container']]
730 http_middleware.cors:
731 class: Asm89\Stack\Cors
732 arguments: ['%cors.config%']
734 - { name: http_middleware, priority: 250 }
735 psr7.http_foundation_factory:
736 class: Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory
737 psr7.http_message_factory:
738 class: Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory
740 class: Drupal\Core\Language\LanguageManager
741 arguments: ['@language.default']
742 language.current_language_context:
743 class: Drupal\Core\Language\ContextProvider\CurrentLanguageContext
744 arguments: ['@language_manager']
746 - { name: 'context_provider' }
748 class: Drupal\Core\Language\LanguageDefault
749 arguments: ['%language.default_values%']
750 string_translator.custom_strings:
751 class: Drupal\Core\StringTranslation\Translator\CustomStrings
752 arguments: ['@settings']
754 - { name: string_translator, priority: 30 }
756 class: Drupal\Core\StringTranslation\TranslationManager
757 arguments: ['@language.default']
759 - { name: service_collector, tag: string_translator, call: addTranslator }
761 class: Drupal\Core\Database\Connection
762 factory: Drupal\Core\Database\Database::getConnection
765 class: Drupal\Core\TypedData\TypedDataManager
766 arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@class_resolver']
768 - [setValidationConstraintManager, ['@validation.constraint']]
770 - { name: plugin_manager_cache_clear }
771 validation.constraint:
772 class: Drupal\Core\Validation\ConstraintManager
773 parent: default_plugin_manager
775 - { name: plugin_manager_cache_clear }
777 class: Drupal\Core\Lock\DatabaseLockBackend
778 arguments: ['@database']
780 - { name: backend_overridable }
783 class: Drupal\Core\Lock\PersistentDatabaseLockBackend
784 arguments: ['@database']
786 - { name: backend_overridable }
788 router.request_context:
789 class: Drupal\Core\Routing\RequestContext
793 - [fromRequestStack, ['@request_stack']]
794 router.admin_context:
795 class: Drupal\Core\Routing\AdminContext
796 arguments: ['@current_route_match']
797 router.route_provider:
798 class: Drupal\Core\Routing\RouteProvider
799 arguments: ['@database', '@state', '@path.current', '@cache.data', '@path_processor_manager', '@cache_tags.invalidator']
801 - { name: event_subscriber }
802 - { name: backend_overridable }
803 router.route_provider.lazy_builder:
804 class: Drupal\Core\Routing\RouteProviderLazyBuilder
805 arguments: ['@router.route_provider', '@router.builder']
806 router.route_preloader:
807 class: Drupal\Core\Routing\RoutePreloader
808 arguments: ['@router.route_provider', '@state', '@cache.bootstrap']
810 - { name: 'event_subscriber' }
811 router.matcher.final_matcher:
812 class: Drupal\Core\Routing\UrlMatcher
813 arguments: ['@path.current']
814 deprecated: The "%service_id%" service is deprecated. You should use the 'router.no_access_checks' service instead.
816 class: Symfony\Cmf\Component\Routing\NestedMatcher\NestedMatcher
817 arguments: ['@router.route_provider']
819 - [setFinalMatcher, ['@router.matcher.final_matcher']]
821 - { name: service_collector, tag: non_lazy_route_filter, call: addRouteFilter }
822 deprecated: The "%service_id%" service is deprecated. You should use the 'router.no_access_checks' service instead.
823 route_filter.lazy_collector:
824 class: Drupal\Core\Routing\LazyRouteFilter
826 - { name: non_lazy_route_filter }
827 parent: container.trait
828 route_filter_subscriber:
829 class: Drupal\Core\EventSubscriber\RouteFilterSubscriber
830 arguments: ['@route_filter.lazy_collector']
832 - { name: event_subscriber }
833 url_generator.non_bubbling:
834 class: Drupal\Core\Routing\UrlGenerator
835 arguments: ['@router.route_provider', '@path_processor_manager', '@route_processor_manager', '@request_stack', '%filter_protocols%']
838 - [setContext, ['@?router.request_context']]
840 class: Drupal\Core\Render\MetadataBubblingUrlGenerator
841 arguments: ['@url_generator.non_bubbling', '@renderer']
843 - [setContext, ['@?router.request_context']]
844 redirect.destination:
845 class: Drupal\Core\Routing\RedirectDestination
846 arguments: ['@request_stack', '@url_generator']
847 unrouted_url_assembler:
848 class: Drupal\Core\Utility\UnroutedUrlAssembler
849 arguments: ['@request_stack', '@path_processor_manager', '%filter_protocols%']
851 class: Drupal\Core\Utility\LinkGenerator
852 arguments: ['@url_generator', '@module_handler', '@renderer']
854 class: Drupal\Core\Routing\AccessAwareRouter
855 arguments: ['@router.no_access_checks', '@access_manager', '@current_user']
857 class: Symfony\Cmf\Component\Routing\DynamicRouter
858 arguments: ['@router.request_context', '@router.matcher', '@url_generator']
860 - { name: service_collector, tag: non_lazy_route_enhancer, call: addRouteEnhancer }
861 deprecated: The "%service_id%" service is deprecated. You should use the 'router.no_access_checks' service instead.
862 router.no_access_checks:
863 class: \Drupal\Core\Routing\Router
864 arguments: ['@router.route_provider', '@path.current', '@url_generator']
866 - { name: service_collector, tag: non_lazy_route_enhancer, call: addRouteEnhancer }
867 - { name: service_collector, tag: non_lazy_route_filter, call: addRouteFilter }
869 - [setContext, ['@router.request_context']]
870 router.path_roots_subscriber:
871 class: Drupal\Core\EventSubscriber\PathRootsSubscriber
872 arguments: ['@state']
874 - { name: event_subscriber }
876 class: Drupal\Core\Entity\Query\QueryFactory
877 arguments: ['@entity.manager']
879 - [setContainer, ['@service_container']]
881 class: Drupal\Core\Config\Entity\Query\QueryFactory
882 arguments: ['@config.factory', '@keyvalue', '@config.manager']
884 - { name: event_subscriber }
886 class: Drupal\Core\Entity\Query\Sql\QueryFactory
887 arguments: ['@database']
889 - { name: backend_overridable }
890 pgsql.entity.query.sql:
891 class: Drupal\Core\Entity\Query\Sql\pgsql\QueryFactory
892 arguments: ['@database']
894 class: Drupal\Core\Entity\Query\Null\QueryFactory
895 entity.query.keyvalue:
896 class: Drupal\Core\Entity\KeyValueStore\Query\QueryFactory
897 arguments: ['@keyvalue']
899 class: Drupal\Core\Routing\MatcherDumper
900 arguments: ['@database', '@state']
902 - { name: backend_overridable }
905 class: Drupal\Core\Routing\RouteBuilder
906 arguments: ['@router.dumper', '@lock', '@event_dispatcher', '@module_handler', '@controller_resolver', '@access_manager.check_provider']
909 - { name: needs_destruction }
910 menu.rebuild_subscriber:
911 class: Drupal\Core\EventSubscriber\MenuRouterRebuildSubscriber
912 arguments: ['@lock', '@plugin.manager.menu.link']
914 - { name: event_subscriber }
916 class: Drupal\Core\Path\AliasStorage
917 arguments: ['@database', '@module_handler']
919 - { name: backend_overridable }
921 class: Drupal\Core\Path\PathMatcher
922 arguments: ['@config.factory', '@current_route_match']
924 class: Drupal\Core\Path\PathValidator
925 arguments: ['@router', '@router.no_access_checks', '@current_user', '@path_processor_manager']
927 # The argument to the hashing service defined in services.yml, to the
928 # constructor of PhpassHashedPassword is the log2 number of iterations for
929 # password stretching.
930 # @todo increase by 1 every Drupal version in order to counteract increases in
931 # the speed and power of computers available to crack the hashes. The current
932 # password hashing method was introduced in Drupal 7 with a log2 count of 15.
934 class: Drupal\Core\Password\PhpassHashedPassword
936 request_format_route_filter:
937 class: Drupal\Core\Routing\RequestFormatRouteFilter
939 - { name: route_filter }
941 class: Drupal\Core\Routing\MethodFilter
943 - { name: route_filter, priority: 1 }
944 content_type_header_matcher:
945 class: Drupal\Core\Routing\ContentTypeHeaderMatcher
947 - { name: route_filter }
948 paramconverter_manager:
949 class: Drupal\Core\ParamConverter\ParamConverterManager
951 - { name: service_collector, tag: paramconverter, call: addConverter }
952 paramconverter_subscriber:
953 class: Drupal\Core\EventSubscriber\ParamConverterSubscriber
955 - { name: event_subscriber }
956 arguments: ['@paramconverter_manager']
957 paramconverter.entity:
958 class: Drupal\Core\ParamConverter\EntityConverter
960 - { name: paramconverter }
961 arguments: ['@entity.manager']
962 paramconverter.entity_revision:
963 class: Drupal\Core\ParamConverter\EntityRevisionParamConverter
965 - { name: paramconverter }
966 arguments: ['@entity_type.manager', '@entity.repository']
967 paramconverter.configentity_admin:
968 class: Drupal\Core\ParamConverter\AdminPathConfigEntityConverter
970 # Use a higher priority than EntityConverter, see the class for details.
971 - { name: paramconverter, priority: 5 }
972 arguments: ['@entity.manager', '@config.factory', '@router.admin_context']
974 route_subscriber.module:
975 class: Drupal\Core\EventSubscriber\ModuleRouteSubscriber
977 - { name: event_subscriber }
978 arguments: ['@module_handler']
979 resolver_manager.entity:
980 class: Drupal\Core\Entity\EntityResolverManager
981 arguments: ['@entity.manager', '@class_resolver']
982 route_subscriber.entity:
983 class: Drupal\Core\EventSubscriber\EntityRouteAlterSubscriber
985 - { name: event_subscriber }
986 arguments: ['@resolver_manager.entity']
987 ajax_response.subscriber:
988 class: Drupal\Core\EventSubscriber\AjaxResponseSubscriber
989 arguments: ['@ajax_response.attachments_processor']
991 - { name: event_subscriber }
992 form_ajax_subscriber:
993 class: Drupal\Core\Form\EventSubscriber\FormAjaxSubscriber
994 arguments: ['@form_ajax_response_builder', '@string_translation']
996 - { name: event_subscriber }
997 route_enhancer.lazy_collector:
998 class: Drupal\Core\Routing\LazyRouteEnhancer
1000 - { name: non_lazy_route_enhancer, priority: 5000 }
1001 parent: container.trait
1002 route_enhancer_subscriber:
1003 class: Drupal\Core\EventSubscriber\RouteEnhancerSubscriber
1004 arguments: ['@route_enhancer.lazy_collector']
1006 - { name: event_subscriber }
1007 route_enhancer.param_conversion:
1008 class: Drupal\Core\Routing\Enhancer\ParamConversionEnhancer
1009 arguments: ['@paramconverter_manager']
1011 - { name: route_enhancer }
1012 - { name: event_subscriber }
1013 route_enhancer.form:
1014 class: Drupal\Core\Routing\Enhancer\FormRouteEnhancer
1016 - { name: route_enhancer }
1017 route_enhancer.entity:
1018 class: Drupal\Core\Entity\Enhancer\EntityRouteEnhancer
1020 - { name: route_enhancer, priority: 20 }
1021 route_enhancer.entity_revision:
1022 class: Drupal\Core\Routing\Enhancer\EntityRevisionRouteEnhancer
1024 - { name: route_enhancer }
1025 route_special_attributes_subscriber:
1026 class: Drupal\Core\EventSubscriber\SpecialAttributesRouteSubscriber
1028 - { name: event_subscriber }
1029 route_http_method_subscriber:
1030 class: Drupal\Core\EventSubscriber\RouteMethodSubscriber
1032 - { name: event_subscriber }
1033 psr_response_view_subscriber:
1034 class: Drupal\Core\EventSubscriber\PsrResponseSubscriber
1035 arguments: ['@psr7.http_foundation_factory']
1037 - { name: event_subscriber }
1039 # Main content view subscriber plus the renderers it uses.
1040 main_content_view_subscriber:
1041 class: Drupal\Core\EventSubscriber\MainContentViewSubscriber
1042 arguments: ['@class_resolver', '@current_route_match', '%main_content_renderers%']
1044 - { name: event_subscriber }
1045 accept_negotiation_406:
1046 class: Drupal\Core\EventSubscriber\AcceptNegotiation406
1048 - { name: event_subscriber }
1049 main_content_renderer.html:
1050 class: Drupal\Core\Render\MainContent\HtmlRenderer
1051 arguments: ['@title_resolver', '@plugin.manager.display_variant', '@event_dispatcher', '@module_handler', '@renderer', '@render_cache', '%renderer.config%']
1053 - { name: render.main_content_renderer, format: html }
1054 main_content_renderer.ajax:
1055 class: Drupal\Core\Render\MainContent\AjaxRenderer
1056 arguments: ['@element_info']
1058 - { name: render.main_content_renderer, format: drupal_ajax }
1059 - { name: render.main_content_renderer, format: iframeupload }
1060 main_content_renderer.dialog:
1061 class: Drupal\Core\Render\MainContent\DialogRenderer
1062 arguments: ['@title_resolver']
1064 - { name: render.main_content_renderer, format: drupal_dialog }
1065 main_content_renderer.modal:
1066 class: Drupal\Core\Render\MainContent\ModalRenderer
1067 arguments: ['@title_resolver']
1069 - { name: render.main_content_renderer, format: drupal_modal }
1071 class: Drupal\Core\Controller\HtmlFormController
1072 arguments: ['@controller_resolver', '@form_builder', '@class_resolver']
1073 controller.entity_form:
1074 class: Drupal\Core\Entity\HtmlEntityFormController
1075 arguments: ['@controller_resolver', '@form_builder', '@entity.manager']
1076 form_ajax_response_builder:
1077 class: Drupal\Core\Form\FormAjaxResponseBuilder
1078 arguments: ['@main_content_renderer.ajax', '@current_route_match']
1080 class: Symfony\Component\HttpKernel\EventListener\RouterListener
1082 - { name: event_subscriber }
1083 arguments: ['@router', '@request_stack', '@router.request_context', NULL]
1084 options_request_listener:
1085 class: Drupal\Core\EventSubscriber\OptionsRequestSubscriber
1086 arguments: ['@router.route_provider']
1088 - { name: event_subscriber }
1089 bare_html_page_renderer:
1090 class: Drupal\Core\Render\BareHtmlPageRenderer
1091 arguments: ['@renderer', '@html_response.attachments_processor']
1094 class: Drupal\Core\PrivateKey
1095 arguments: ['@state']
1097 class: Drupal\Core\Access\CsrfTokenGenerator
1098 arguments: ['@private_key', '@session_manager.metadata_bag']
1099 access_arguments_resolver_factory:
1100 class: Drupal\Core\Access\AccessArgumentsResolverFactory
1102 class: Drupal\Core\Access\AccessManager
1103 arguments: ['@router.route_provider', '@paramconverter_manager', '@access_arguments_resolver_factory', '@current_user', '@access_manager.check_provider']
1104 access_manager.check_provider:
1105 class: Drupal\Core\Access\CheckProvider
1107 - [setContainer, ['@service_container']]
1109 access_check.default:
1110 class: Drupal\Core\Access\DefaultAccessCheck
1112 - { name: access_check, applies_to: _access }
1113 access_check.entity:
1114 class: Drupal\Core\Entity\EntityAccessCheck
1116 - { name: access_check, applies_to: _entity_access }
1117 access_check.entity_create:
1118 class: Drupal\Core\Entity\EntityCreateAccessCheck
1119 arguments: ['@entity.manager']
1121 - { name: access_check, applies_to: _entity_create_access }
1122 access_check.entity_create_any:
1123 class: Drupal\Core\Entity\EntityCreateAnyAccessCheck
1124 arguments: ['@entity_type.manager', '@entity_type.bundle.info']
1126 - { name: access_check, applies_to: _entity_create_any_access }
1128 class: Drupal\Core\Theme\ThemeAccessCheck
1129 arguments: ['@theme_handler']
1131 - { name: access_check, applies_to: _access_theme }
1132 access_check.custom:
1133 class: Drupal\Core\Access\CustomAccessCheck
1134 arguments: ['@controller_resolver', '@access_arguments_resolver_factory']
1136 - { name: access_check, applies_to: _custom_access }
1138 class: Drupal\Core\Access\CsrfAccessCheck
1140 - { name: access_check, applies_to: _csrf_token, needs_incoming_request: TRUE }
1141 arguments: ['@csrf_token']
1142 access_check.header.csrf:
1143 class: Drupal\Core\Access\CsrfRequestHeaderAccessCheck
1144 arguments: ['@session_configuration', '@csrf_token']
1146 - { name: access_check }
1148 class: Drupal\Core\Site\MaintenanceMode
1149 arguments: ['@state', '@current_user']
1150 maintenance_mode_subscriber:
1151 class: Drupal\Core\EventSubscriber\MaintenanceModeSubscriber
1152 arguments: ['@maintenance_mode', '@config.factory', '@string_translation', '@url_generator', '@current_user', '@bare_html_page_renderer']
1154 - { name: event_subscriber }
1156 class: Drupal\Core\EventSubscriber\PathSubscriber
1158 - { name: event_subscriber }
1159 arguments: ['@path.alias_manager', '@path.current']
1160 route_access_response_subscriber:
1161 class: Drupal\Core\EventSubscriber\RouteAccessResponseSubscriber
1163 - { name: event_subscriber }
1164 client_error_response_subscriber:
1165 class: Drupal\Core\EventSubscriber\ClientErrorResponseSubscriber
1167 - { name: event_subscriber }
1168 anonymous_user_response_subscriber:
1169 class: Drupal\Core\EventSubscriber\AnonymousUserResponseSubscriber
1171 - { name: event_subscriber }
1172 arguments: ['@current_user']
1173 ajax_response.attachments_processor:
1174 class: Drupal\Core\Ajax\AjaxResponseAttachmentsProcessor
1176 arguments: ['@asset.resolver', '@config.factory', '@asset.css.collection_renderer', '@asset.js.collection_renderer', '@request_stack', '@renderer', '@module_handler']
1177 html_response.attachments_processor:
1178 class: Drupal\Core\Render\HtmlResponseAttachmentsProcessor
1180 arguments: ['@asset.resolver', '@config.factory', '@asset.css.collection_renderer', '@asset.js.collection_renderer', '@request_stack', '@renderer', '@module_handler']
1181 html_response.subscriber:
1182 class: Drupal\Core\EventSubscriber\HtmlResponseSubscriber
1184 - { name: event_subscriber }
1185 arguments: ['@html_response.attachments_processor']
1186 finish_response_subscriber:
1187 class: Drupal\Core\EventSubscriber\FinishResponseSubscriber
1189 - { name: event_subscriber }
1190 arguments: ['@language_manager', '@config.factory', '@page_cache_request_policy', '@page_cache_response_policy', '@cache_contexts_manager', '%http.response.debug_cacheability_headers%']
1191 response_generator_subscriber:
1192 class: Drupal\Core\EventSubscriber\ResponseGeneratorSubscriber
1194 - { name: event_subscriber }
1195 redirect_response_subscriber:
1196 class: Drupal\Core\EventSubscriber\RedirectResponseSubscriber
1197 arguments: ['@unrouted_url_assembler', '@router.request_context']
1199 - { name: event_subscriber }
1200 redirect_leading_slashes_subscriber:
1201 class: Drupal\Core\EventSubscriber\RedirectLeadingSlashesSubscriber
1203 - { name: event_subscriber }
1204 request_close_subscriber:
1205 class: Drupal\Core\EventSubscriber\RequestCloseSubscriber
1207 - { name: event_subscriber }
1208 arguments: ['@module_handler']
1209 config_import_subscriber:
1210 class: Drupal\Core\EventSubscriber\ConfigImportSubscriber
1212 - { name: event_subscriber }
1213 arguments: ['@theme_handler']
1214 config_snapshot_subscriber:
1215 class: Drupal\Core\EventSubscriber\ConfigSnapshotSubscriber
1217 - { name: event_subscriber }
1218 arguments: ['@config.manager', '@config.storage', '@config.storage.snapshot']
1219 exception.needs_installer:
1220 class: Drupal\Core\EventSubscriber\ExceptionDetectNeedsInstallSubscriber
1221 arguments: ['@database']
1223 - { name: event_subscriber }
1224 exception.default_json:
1225 class: Drupal\Core\EventSubscriber\ExceptionJsonSubscriber
1227 - { name: event_subscriber }
1228 exception.default_html:
1229 class: Drupal\Core\EventSubscriber\DefaultExceptionHtmlSubscriber
1231 - { name: event_subscriber }
1232 arguments: ['@http_kernel', '@logger.channel.php', '@redirect.destination', '@router.no_access_checks']
1234 class: Drupal\Core\EventSubscriber\DefaultExceptionSubscriber
1236 - { name: event_subscriber }
1237 arguments: ['@config.factory']
1239 class: Drupal\Core\EventSubscriber\ExceptionLoggingSubscriber
1241 - { name: event_subscriber }
1242 arguments: ['@logger.factory']
1243 exception.custom_page_html:
1244 class: Drupal\Core\EventSubscriber\CustomPageExceptionHtmlSubscriber
1246 - { name: event_subscriber }
1247 arguments: ['@config.factory', '@http_kernel', '@logger.channel.php', '@redirect.destination', '@router.no_access_checks', '@access_manager']
1248 exception.fast_404_html:
1249 class: Drupal\Core\EventSubscriber\Fast404ExceptionHtmlSubscriber
1251 - { name: event_subscriber }
1252 arguments: ['@config.factory', '@http_kernel']
1253 exception.test_site:
1254 class: Drupal\Core\EventSubscriber\ExceptionTestSiteSubscriber
1256 - { name: event_subscriber }
1257 exception.enforced_form_response:
1258 class: Drupal\Core\EventSubscriber\EnforcedFormResponseSubscriber
1260 - { name: event_subscriber }
1261 route_processor_manager:
1262 class: Drupal\Core\RouteProcessor\RouteProcessorManager
1264 - { name: service_collector, tag: route_processor_outbound, call: addOutbound }
1265 path_processor_manager:
1266 class: Drupal\Core\PathProcessor\PathProcessorManager
1268 - { name: service_collector, tag: path_processor_inbound, call: addInbound }
1269 - { name: service_collector, tag: path_processor_outbound, call: addOutbound }
1270 path_processor_decode:
1271 class: Drupal\Core\PathProcessor\PathProcessorDecode
1273 - { name: path_processor_inbound, priority: 1000 }
1274 path_processor_front:
1275 class: Drupal\Core\PathProcessor\PathProcessorFront
1277 - { name: path_processor_inbound, priority: 200 }
1278 - { name: path_processor_outbound, priority: 200 }
1279 arguments: ['@config.factory']
1280 route_processor_current:
1281 class: Drupal\Core\RouteProcessor\RouteProcessorCurrent
1282 arguments: ['@current_route_match']
1284 - { name: route_processor_outbound, priority: 200 }
1285 path_processor_alias:
1286 class: Drupal\Core\PathProcessor\PathProcessorAlias
1288 - { name: path_processor_inbound, priority: 100 }
1289 - { name: path_processor_outbound, priority: 300 }
1290 arguments: ['@path.alias_manager']
1291 route_processor_csrf:
1292 class: Drupal\Core\Access\RouteProcessorCsrf
1294 - { name: route_processor_outbound }
1295 arguments: ['@csrf_token']
1297 class: Drupal\Core\Transliteration\PhpTransliteration
1298 arguments: [null, '@module_handler']
1300 class: Drupal\Core\Flood\DatabaseBackend
1301 arguments: ['@database', '@request_stack']
1303 - { name: backend_overridable }
1304 plugin.manager.mail:
1305 class: Drupal\Core\Mail\MailManager
1306 arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@config.factory', '@logger.factory', '@string_translation', '@renderer']
1307 plugin.manager.condition:
1308 class: Drupal\Core\Condition\ConditionManager
1309 parent: default_plugin_manager
1310 plugin.manager.element_info:
1311 class: Drupal\Core\Render\ElementInfoManager
1312 arguments: ['@container.namespaces', '@cache.discovery', '@cache_tags.invalidator', '@module_handler', '@theme.manager']
1313 stream_wrapper_manager:
1314 class: Drupal\Core\StreamWrapper\StreamWrapperManager
1316 - [setContainer, ['@service_container']]
1317 stream_wrapper.public:
1318 class: Drupal\Core\StreamWrapper\PublicStream
1320 - { name: stream_wrapper, scheme: public }
1321 stream_wrapper.temporary:
1322 class: Drupal\Core\StreamWrapper\TemporaryStream
1324 - { name: stream_wrapper, scheme: temporary }
1325 kernel_destruct_subscriber:
1326 class: Drupal\Core\EventSubscriber\KernelDestructionSubscriber
1328 - { name: event_subscriber }
1330 - [setContainer, ['@service_container']]
1331 image.toolkit.manager:
1332 class: Drupal\Core\ImageToolkit\ImageToolkitManager
1333 arguments: ['@config.factory']
1334 parent: default_plugin_manager
1336 - { name: plugin_manager_cache_clear }
1337 image.toolkit.operation.manager:
1338 class: Drupal\Core\ImageToolkit\ImageToolkitOperationManager
1339 arguments: ['@logger.channel.image', '@image.toolkit.manager']
1340 parent: default_plugin_manager
1342 - { name: plugin_manager_cache_clear }
1344 class: Drupal\Core\Image\ImageFactory
1345 arguments: ['@image.toolkit.manager']
1347 class: Drupal\Core\Breadcrumb\BreadcrumbManager
1348 arguments: ['@module_handler']
1350 - { name: service_collector, tag: breadcrumb_builder, call: addBuilder }
1352 class: Drupal\Core\Utility\Token
1353 arguments: ['@module_handler', '@cache.default', '@language_manager', '@cache_tags.invalidator', '@renderer']
1355 class: Drupal\Core\Batch\BatchStorage
1356 arguments: ['@database', '@session', '@csrf_token']
1358 - { name: backend_overridable }
1360 replica_database_ignore__subscriber:
1361 class: Drupal\Core\EventSubscriber\ReplicaDatabaseIgnoreSubscriber
1363 - {name: event_subscriber}
1365 class: Drupal\Core\Locale\CountryManager
1366 arguments: ['@module_handler']
1368 class: Drupal\Core\Datetime\DateFormatter
1369 arguments: ['@entity.manager', '@language_manager', '@string_translation', '@config.factory', '@request_stack']
1371 class: Drupal\Component\Bridge\ZfExtensionManagerSfContainer
1373 - [setContainer, ['@service_container']]
1374 arguments: ['feed.reader.']
1376 class: Drupal\Component\Bridge\ZfExtensionManagerSfContainer
1378 - [setContainer, ['@service_container']]
1379 arguments: ['feed.writer.']
1380 # Zend Feed reader plugins. Plugin instances should not be shared.
1381 feed.reader.dublincoreentry:
1382 class: Zend\Feed\Reader\Extension\DublinCore\Entry
1384 feed.reader.dublincorefeed:
1385 class: Zend\Feed\Reader\Extension\DublinCore\Feed
1387 feed.reader.contententry:
1388 class: Zend\Feed\Reader\Extension\Content\Entry
1390 feed.reader.atomentry:
1391 class: Zend\Feed\Reader\Extension\Atom\Entry
1393 feed.reader.atomfeed:
1394 class: Zend\Feed\Reader\Extension\Atom\Feed
1396 feed.reader.slashentry:
1397 class: Zend\Feed\Reader\Extension\Slash\Entry
1399 feed.reader.wellformedwebentry:
1400 class: Zend\Feed\Reader\Extension\WellFormedWeb\Entry
1402 feed.reader.threadentry:
1403 class: Zend\Feed\Reader\Extension\Thread\Entry
1405 feed.reader.podcastentry:
1406 class: Zend\Feed\Reader\Extension\Podcast\Entry
1408 feed.reader.podcastfeed:
1409 class: Zend\Feed\Reader\Extension\Podcast\Feed
1411 # Zend Feed writer plugins. Plugins should be set as prototype scope.
1412 feed.writer.atomrendererfeed:
1413 class: Zend\Feed\Writer\Extension\Atom\Renderer\Feed
1415 feed.writer.contentrendererentry:
1416 class: Zend\Feed\Writer\Extension\Content\Renderer\Entry
1418 feed.writer.dublincorerendererentry:
1419 class: Zend\Feed\Writer\Extension\DublinCore\Renderer\Entry
1421 feed.writer.dublincorerendererfeed:
1422 class: Zend\Feed\Writer\Extension\DublinCore\Renderer\Feed
1424 feed.writer.itunesentry:
1425 class: Zend\Feed\Writer\Extension\ITunes\Entry
1427 feed.writer.itunesfeed:
1428 class: Zend\Feed\Writer\Extension\ITunes\Feed
1430 feed.writer.itunesrendererentry:
1431 class: Zend\Feed\Writer\Extension\ITunes\Renderer\Entry
1433 feed.writer.itunesrendererfeed:
1434 class: Zend\Feed\Writer\Extension\ITunes\Renderer\Feed
1436 feed.writer.slashrendererentry:
1437 class: Zend\Feed\Writer\Extension\Slash\Renderer\Entry
1439 feed.writer.threadingrendererentry:
1440 class: Zend\Feed\Writer\Extension\Threading\Renderer\Entry
1442 feed.writer.wellformedwebrendererentry:
1443 class: Zend\Feed\Writer\Extension\WellFormedWeb\Renderer\Entry
1446 class: Drupal\Core\Theme\ThemeManager
1447 arguments: ['@app.root', '@theme.negotiator', '@theme.initialization', '@module_handler']
1449 - [setThemeRegistry, ['@theme.registry']]
1450 theme.initialization:
1451 class: Drupal\Core\Theme\ThemeInitialization
1452 arguments: ['@app.root', '@theme_handler', '@cache.bootstrap', '@module_handler']
1454 class: Drupal\Core\Theme\Registry
1455 arguments: ['@app.root', '@cache.default', '@lock', '@module_handler', '@theme_handler', '@theme.initialization', null, '@cache.bootstrap']
1457 - { name: needs_destruction }
1459 - [setThemeManager, ['@theme.manager']]
1461 class: Drupal\Core\Authentication\AuthenticationManager
1462 arguments: ['@authentication_collector']
1463 authentication_collector:
1464 class: Drupal\Core\Authentication\AuthenticationCollector
1466 - { name: service_collector, tag: authentication_provider, call: addProvider }
1467 authentication_subscriber:
1468 class: Drupal\Core\EventSubscriber\AuthenticationSubscriber
1469 arguments: ['@authentication', '@current_user']
1471 - { name: event_subscriber }
1473 class: Drupal\Core\Session\AccountSwitcher
1474 arguments: ['@current_user', '@session_handler.write_safe']
1475 user_permissions_hash_generator:
1476 class: Drupal\Core\Session\PermissionsHashGenerator
1477 arguments: ['@private_key', '@cache.bootstrap', '@cache.static']
1479 class: Drupal\Core\Session\AccountProxy
1480 session_configuration:
1481 class: Drupal\Core\Session\SessionConfiguration
1482 arguments: ['%session.storage.options%']
1484 class: Symfony\Component\HttpFoundation\Session\Session
1485 arguments: ['@session_manager', '@session.attribute_bag', '@session.flash_bag']
1487 class: Symfony\Component\HttpFoundation\Session\Flash\FlashBag
1489 session.attribute_bag:
1490 class: Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag
1493 alias: session_handler.storage
1494 session_handler.storage:
1495 class: Drupal\Core\Session\SessionHandler
1496 arguments: ['@request_stack', '@database']
1498 - { name: backend_overridable }
1499 session_handler.write_check:
1500 class: Symfony\Component\HttpFoundation\Session\Storage\Handler\WriteCheckSessionHandler
1502 - { name: session_handler_proxy, priority: 100 }
1503 session_handler.write_safe:
1504 class: Drupal\Core\Session\WriteSafeSessionHandler
1506 - { name: session_handler_proxy, priority: 150 }
1508 class: Drupal\Core\Session\SessionManager
1509 arguments: ['@request_stack', '@database', '@session_manager.metadata_bag', '@session_configuration', '@session_handler']
1511 - { name: backend_overridable }
1513 - [setWriteSafeHandler, ['@session_handler.write_safe']]
1514 session_manager.metadata_bag:
1515 class: Drupal\Core\Session\MetadataBag
1516 arguments: ['@settings']
1517 asset.css.collection_renderer:
1518 class: Drupal\Core\Asset\CssCollectionRenderer
1519 arguments: [ '@state' ]
1520 asset.css.collection_optimizer:
1521 class: Drupal\Core\Asset\CssCollectionOptimizer
1522 arguments: [ '@asset.css.collection_grouper', '@asset.css.optimizer', '@asset.css.dumper', '@state' ]
1523 asset.css.optimizer:
1524 class: Drupal\Core\Asset\CssOptimizer
1525 asset.css.collection_grouper:
1526 class: Drupal\Core\Asset\CssCollectionGrouper
1528 class: Drupal\Core\Asset\AssetDumper
1529 asset.js.collection_renderer:
1530 class: Drupal\Core\Asset\JsCollectionRenderer
1531 arguments: [ '@state' ]
1532 asset.js.collection_optimizer:
1533 class: Drupal\Core\Asset\JsCollectionOptimizer
1534 arguments: [ '@asset.js.collection_grouper', '@asset.js.optimizer', '@asset.js.dumper', '@state' ]
1536 class: Drupal\Core\Asset\JsOptimizer
1537 asset.js.collection_grouper:
1538 class: Drupal\Core\Asset\JsCollectionGrouper
1540 class: Drupal\Core\Asset\AssetDumper
1542 class: Drupal\Core\Asset\LibraryDiscovery
1543 arguments: ['@library.discovery.collector']
1544 library.discovery.collector:
1545 class: Drupal\Core\Asset\LibraryDiscoveryCollector
1546 arguments: ['@cache.discovery', '@lock', '@library.discovery.parser', '@theme.manager']
1548 - { name: needs_destruction }
1549 library.discovery.parser:
1550 class: Drupal\Core\Asset\LibraryDiscoveryParser
1551 arguments: ['@app.root', '@module_handler', '@theme.manager']
1552 library.dependency_resolver:
1553 class: Drupal\Core\Asset\LibraryDependencyResolver
1554 arguments: ['@library.discovery']
1556 class: Drupal\Core\Asset\AssetResolver
1557 arguments: ['@library.discovery', '@library.dependency_resolver', '@module_handler', '@theme.manager', '@language_manager', '@cache.data']
1559 class: Drupal\Core\Extension\InfoParser
1561 class: Drupal\Core\Template\TwigEnvironment
1562 arguments: ['@app.root', '@cache.default', '%twig_extension_hash%', '@state', '@twig.loader', '%twig.config%']
1564 - { name: service_collector, tag: 'twig.extension', call: addExtension }
1566 class: Drupal\Core\Template\TwigExtension
1567 arguments: ['@renderer', '@url_generator', '@theme.manager', '@date.formatter']
1569 - { name: twig.extension, priority: 100 }
1570 # @todo Figure out what to do about debugging functions.
1571 # @see https://www.drupal.org/node/1804998
1572 twig.extension.debug:
1573 class: Twig_Extension_Debug
1575 - { name: twig.extension }
1577 class: Twig_Loader_Chain
1580 - { name: service_collector, tag: twig.loader, call: addLoader, required: TRUE }
1581 twig.loader.filesystem:
1582 class: Drupal\Core\Template\Loader\FilesystemLoader
1583 arguments: ['@app.root', '@module_handler', '@theme_handler']
1585 - { name: twig.loader, priority: 100 }
1586 twig.loader.theme_registry:
1587 class: Drupal\Core\Template\Loader\ThemeRegistryLoader
1588 arguments: ['@theme.registry']
1590 - { name: twig.loader, priority: 0 }
1592 class: Drupal\Core\Template\Loader\StringLoader
1594 - { name: twig.loader, priority: -100 }
1596 alias: plugin.manager.element_info
1597 file.mime_type.guesser:
1598 class: Drupal\Core\File\MimeType\MimeTypeGuesser
1599 arguments: ['@stream_wrapper_manager']
1601 - { name: service_collector, tag: mime_type_guesser, call: addGuesser }
1603 file.mime_type.guesser.extension:
1604 class: Drupal\Core\File\MimeType\ExtensionMimeTypeGuesser
1605 arguments: ['@module_handler']
1607 - { name: mime_type_guesser }
1609 # Currently needs to be public as it is called by
1610 # \Drupal\Core\Render\Element\StatusMessages.
1611 # @todo Consider making this service private again after
1612 # https://www.drupal.org/node/2367555 lands.
1613 render_placeholder_generator:
1614 class: Drupal\Core\Render\PlaceholderGenerator
1615 arguments: ['%renderer.config%']
1617 class: Drupal\Core\Render\PlaceholderingRenderCache
1618 arguments: ['@request_stack', '@cache_factory', '@cache_contexts_manager', '@render_placeholder_generator']
1620 class: Drupal\Core\Render\Renderer
1621 arguments: ['@controller_resolver', '@theme.manager', '@plugin.manager.element_info', '@render_placeholder_generator', '@render_cache', '@request_stack', '%renderer.config%']
1622 early_rendering_controller_wrapper_subscriber:
1623 class: Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber
1624 arguments: ['@controller_resolver', '@renderer']
1626 - { name: event_subscriber }
1627 # Placeholder strategies for rendering placeholders.
1628 html_response.placeholder_strategy_subscriber:
1629 class: Drupal\Core\EventSubscriber\HtmlResponsePlaceholderStrategySubscriber
1631 - { name: event_subscriber }
1632 arguments: ['@placeholder_strategy']
1633 placeholder_strategy:
1634 class: Drupal\Core\Render\Placeholder\ChainedPlaceholderStrategy
1636 - { name: service_collector, tag: placeholder_strategy, call: addPlaceholderStrategy }
1637 placeholder_strategy.single_flush:
1638 class: Drupal\Core\Render\Placeholder\SingleFlushStrategy
1640 - { name: placeholder_strategy, priority: -1000 }
1642 class: Egulias\EmailValidator\EmailValidator
1643 update.post_update_registry:
1644 class: Drupal\Core\Update\UpdateRegistry
1645 factory: ['@update.post_update_registry_factory', create]
1646 update.post_update_registry_factory:
1647 class: Drupal\Core\Update\UpdateRegistryFactory
1648 parent: container.trait
1650 class: Drupal\Component\Uuid\Php
1651 response_filter.active_link:
1652 class: Drupal\Core\EventSubscriber\ActiveLinkResponseFilter
1653 arguments: ['@current_user', '@path.current', '@path.matcher', '@language_manager']
1655 - { name: event_subscriber }
1656 response_filter.rss.relative_url:
1657 class: Drupal\Core\EventSubscriber\RssResponseRelativeUrlFilter
1659 - { name: event_subscriber }