---
title: "FormDataProvider"
manual: "News system"
version: "main"
permalink: "https://docs.typo3.org/permalink/georgringer/news:formdataprovider@main"
source: "Tutorials/ExtendNews/FormDataProvider/Index.rst"
rendered: "2026-09-23T19:24:09+00:00"
---

# FormDataProvider {#formdataprovider}

[FormDataProvider](https://docs.typo3.org/m/typo3/reference-coreapi/13.4/en-us/ApiOverview/FormEngine/DataCompiling/Index.html#FormEngine-DataCompiling)
can be used to offer form-handling beyond the options provided by `displayCond` and `eval` in the TCA.
Among other things, a FormDataProvider allows dynamic TCA changes while records are loaded in the TYPO3 backend.

## Example {#example}

This example explains how to make at least one image mandatory if the record is flagged as top news.

### 1\) Update TCA {#1-update-tca}

Create the file `Configuration/TCA/Overrides/tx_news_domain_model_news.php` in your custom extension.
See [here](https://docs.typo3.org/permalink/georgringer/news:ext-based-on-news@main) how to create that extension.

```php
<?php

defined('TYPO3') or die();

$GLOBALS['TCA']['tx_news_domain_model_news']['columns']['istopnews']['onChange'] = 'reload';
```

With `'onChange' => 'reload'` you trigger a reload of the backend interface when the "Top news" toggle is clicked.

### 2\) Register FormDataProvider class {#2-register-formdataprovider-class}

Update file `ext_localconf.php` in your extension:

```php
<?php

defined('TYPO3') or die();

use Vendor\CustomExtension\Backend\Form\FormDataProvider\ImageMinItems;
use TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseRowInitializeNew;

$GLOBALS['TYPO3_CONF_VARS']['SYS']['formEngine']['formDataGroup']['tcaDatabaseRecord'][ImageMinItems::class] = [
    'depends' => [
        DatabaseRowInitializeNew::class,
    ],
];
```

### 3\) Add your FormDataProvider class {#3-add-your-formdataprovider-class}

```php
<?php

declare(strict_types=1);

namespace Vendor\CustomExtension\Backend\Form\FormDataProvider;

use TYPO3\CMS\Backend\Form\FormDataProviderInterface;

final class ImageMinItems implements FormDataProviderInterface
{
    public function addData(array $result): array
    {
        if ($result['tableName'] == 'tx_news_domain_model_news' && $result['databaseRow']['istopnews'] == 1) {
            $result['processedTca']['columns']['fal_media']['config']['minitems'] = 1;
        }
        return $result;
    }
}
```

This class modifies the TCA when the current record is `tx_news_domain_model_news` and `istopnews` is set.
