---
title: "Feature: #107784 - Autoconfigure backend layout data providers"
manual: "TYPO3 Core Changelog"
version: "main"
permalink: "https://docs.typo3.org/permalink/changelog:feature-107784-1760946896"
source: "Changelog/14.0/Feature-107784-AutoconfigureBackendLayoutDataProviders.rst"
typo3-version: "14.0"
typo3-major: 14
type: "feature"
issue: 107784
forge: "https://forge.typo3.org/issues/107784"
tags: ["Backend", "PHP-API", "ext:backend"]
rendered: "2026-09-20T18:31:11+00:00"
---

# Feature: #107784 - Autoconfigure backend layout data providers {#feature-107784-1760946896}

See [forge#107784](https://forge.typo3.org/issues/107784)

## Description {#description}

Backend layout providers are now autoconfigured once they implement the required
`DataProviderInterface`. Each
autoconfigured layout provider is tagged with
`page_layout.data_provider` in the service container and is automatically added
to the global
`DataProviderCollection`,
if autoconfiguration is enabled in `Services.yaml` or
`Services.php`.

Since backend layout providers must be identifiable to establish a relation to
a configured backend layout, the corresponding interface has been extended.
It now requires backend layout providers to implement a new method
`getIdentifier()`.

### Example {#example}

**EXT:my_extension/Classes/View/BackendLayout/MyLayoutDataProvider.php**

```php
use TYPO3\CMS\Backend\View\BackendLayout\DataProviderInterface;

final class MyLayoutDataProvider implements DataProviderInterface
{
    // ...

    public function getIdentifier(): string
    {
        return 'my_provider';
    }
}
```

> [!IMPORTANT]
> The identifier returned by `getIdentifier()` must:
>
> -   Be a non-empty string
> -   Not contain double underscores (`__`)
>     (used as a separator for combined identifiers)
> -   Be unique across all registered backend layout data providers
>
> Example of a combined identifier: `my_provider__my_layout`

### Manual service configuration {#manual-service-configuration}

If autoconfiguration is disabled, manually tag the service in
`Services.yaml`:

**EXT:my_extension/Configuration/Services.yaml**

```yaml
services:
  MyVendor\MyExtension\View\BackendLayout\MyLayoutDataProvider:
    tags:
      - name: page_layout.data_provider
```

### Provider ordering {#provider-ordering}

If you need to control the order in which providers are processed, use service
priorities in your `Services.yaml`:

**EXT:my_extension/Configuration/Services.yaml**

```yaml
services:
  MyVendor\MyExtension\View\BackendLayout\MyLayoutDataProvider:
    tags:
      - name: page_layout.data_provider
        priority: 100
```

## Impact {#impact}

Backend layout data providers are now automatically registered and can be used
without further configuration. This improves developer experience and reduces
configuration overhead. The previous registration method via
`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['BackendLayoutDataProvider']`
can no longer be used. Instead, existing backend layout providers must
implement the new method `getIdentifier()`.

Using the new autoconfigure-based approach, developers can still support
multiple TYPO3 Core versions by keeping the legacy array-based approach next
to the new autoconfigure-based configuration.
