---
title: "Interfaces"
manual: "Dashboard"
version: "main"
permalink: "https://docs.typo3.org/permalink/typo3/cms-dashboard:interfaces@main"
source: "Developer/Interfaces.rst"
rendered: "2026-10-16T14:33:07+00:00"
---

# Interfaces {#interfaces}

The following list provides information for all necessary interfaces that are used inside of this documentation.
For up to date information, please check the source code.

-   **class WidgetRendererInterface**

    -   *Fully qualified name:* `\TYPO3\CMS\Dashboard\Widgets\WidgetRendererInterface`

    Should be implemented by all widgets.
    This interface defines public API used by ext:dashboard to interact with widgets.

    -   **renderWidget(WidgetContext $context)**

        -   *returntype:* WidgetResult

        *Returns:* The rendered HTML to display, together with an optional label and whether the widget can be refreshed. The context provides the current request, the settings and the configuration of the widget instance.

    -   **getSettingsDefinitions()**

        -   *returntype:* array

        *Returns:* The `SettingDefinition` objects of the settings an editor can configure for an instance of the widget.

-   **class WidgetInterface**

    -   *Fully qualified name:* `\TYPO3\CMS\Dashboard\Widgets\WidgetInterface`

    Can still be implemented by widgets, but `WidgetRendererInterface`
    should be preferred.
    This interface defines public API used by ext:dashboard to interact with widgets.

    -   **renderWidgetContent()**

        -   *returntype:* string

        *Returns:* The rendered HTML to display.

    -   **getOptions()**

        -   *returntype:* array

        *Returns:* The options of the widget as set in the registration.

-   **class RequestAwareWidgetInterface**

    -   *Fully qualified name:* `\TYPO3\CMS\Dashboard\Widgets\RequestAwareWidgetInterface`

    Only relevant for widgets implementing `WidgetInterface`. Widgets
    implementing `WidgetRendererInterface` receive the request via the
    `WidgetContext`.

    This interface declares a widget has a dependency to the current PSR-7 request.
    When implemented, the dashboard controller will call `setRequest()` immediately
    after widget instantiation to hand over the current request. Widgets that rely on
    `BackendViewFactory` typically need the current request.

    -   **setRequest(ServerRequestInterface $request)**

        -   *returntype:* void

-   **class WidgetConfigurationInterface**

    -   *Fully qualified name:* `\TYPO3\CMS\Dashboard\Widgets\WidgetConfigurationInterface`

    Used internally in ext:dashboard.
    Used to separate internal configuration from widgets.
    Can be required in widget classes and passed to view.

    -   **getIdentifier()**

        -   *returntype:* string

        *Returns:* Unique identifer of a widget.

    -   **getServiceName()**

        -   *returntype:* string

        *Returns:* Service name providing the widget implementation.

    -   **getGroupNames()**

        -   *returntype:* array

        *Returns:* Group names associated to this widget.

    -   **getTitle()**

        -   *returntype:* string

        *Returns:* Title of a widget, this is used for the widget selector.

    -   **getDescription()**

        -   *returntype:* string

        *Returns:* Description of a widget, this is used for the widget selector.

    -   **getIconIdentifier()**

        -   *returntype:* string

        *Returns:* Icon identifier of a widget, this is used for the widget selector.

    -   **getHeight()**

        -   *returntype:* int

        *Returns:* Height of a widget in rows (1-6).

    -   **getWidth()**

        -   *returntype:* int

        *Returns:* Width of a widget in columns (1-4).

-   **class AdditionalJavaScriptInterface**

    -   *Fully qualified name:* `\TYPO3\CMS\Dashboard\Widgets\AdditionalJavaScriptInterface`

    Widgets implementing this interface will add the provided JavaScript files.
    Those files will be loaded in dashboard view if the widget is added at least once.

    -   **getJsFiles()**

        Returns a list of JavaScript file names that should be included, e.g.:

        ```php
        return [
            'EXT:my_extension/Resources/Public/JavaScript/file.js',
            'EXT:my_extension/Resources/Public/JavaScript/file2.js',
        ];
        ```

        -   *returntype:* array

        *Returns:* List of JS files to load.

-   **class AdditionalCssInterface**

    -   *Fully qualified name:* `\TYPO3\CMS\Dashboard\Widgets\AdditionalCssInterface`

    Widgets implementing this interface will add the provided Css files.
    Those files will be loaded in dashboard view if the widget is added at least once.

    -   **getCssFiles()**

        Returns a list of Css file names that should be included, e.g.:

        ```php
        return [
            'EXT:my_extension/Resources/Public/Css/widgets.css',
            'EXT:my_extension/Resources/Public/Css/list-widget.css',
        ];
        ```

        -   *returntype:* array

        *Returns:* List of Css files to load.

-   **class ButtonProviderInterface**

    -   *Fully qualified name:* `\TYPO3\CMS\Dashboard\Widgets\ButtonProviderInterface`

    -   **getTitle()**

        -   *returntype:* string

        *Returns:* The title used for the button. E.g. an `LLL:EXT:` reference like `LLL:EXT:dashboard/Resources/Private/Language/locallang.xlf:widgets.t3news.moreItems`.

    -   **getLink()**

        -   *returntype:* string

        *Returns:* The link to use for the button. Clicking the button will open the link.

    -   **getTarget()**

        -   *returntype:* string

        *Returns:* The target of the link, e.g. `_blank`. `LLL:EXT:dashboard/Resources/Private/Language/locallang.xlf:widgets.t3news.moreItems`.

-   **class NumberWithIconDataProviderInterface**

    -   *Fully qualified name:* `\TYPO3\CMS\Dashboard\Widgets\NumberWithIconDataProviderInterface`

    -   **getNumber()**

        -   *returntype:* integer

        *Returns:* The number to display for an number widget.

-   **class EventDataInterface**

    -   *Fully qualified name:* `\TYPO3\CMS\Dashboard\Widgets\EventDataInterface`

    -   **getEventData()**

        -   *returntype:* array

        *Returns:* Returns data which should be send to the widget as JSON encoded value.

-   **class ChartDataProviderInterface**

    -   *Fully qualified name:* `\TYPO3\CMS\Dashboard\Widgets\ChartDataProviderInterface`

    -   **getChartData()**

        -   *returntype:* array

        *Returns:* Provide the data for a graph. The data and options you have depend on the type of chart. More information can be found in the documentation of the specific type: -   **Bar** [https://www.chartjs.org/docs/latest/charts/bar.html#data-structure](https://www.chartjs.org/docs/latest/charts/bar.html#data-structure) -   **Doughnut** [https://www.chartjs.org/docs/latest/charts/doughnut.html#data-structure](https://www.chartjs.org/docs/latest/charts/doughnut.html#data-structure)

-   **class ListDataProviderInterface**

    -   *Fully qualified name:* `\TYPO3\CMS\Dashboard\Widgets\ListDataProviderInterface`

    -   **getItems()**

        -   *returntype:* array

        *Returns:* Provide the array if items. Each entry should be a single string.
