TYPO3 v15 dev-main snapshot ()
This commit is contained in:
+91
@@ -0,0 +1,91 @@
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-107578-1759326054:
|
||||
|
||||
=======================================================================
|
||||
Breaking: #107578 - Prepare EXT:adminpanel DataProviderInterface change
|
||||
=======================================================================
|
||||
|
||||
See :issue:`107578`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The :composer:`typo3/cms-adminpanel` system extension provides the interface
|
||||
:php:`\TYPO3\CMS\Adminpanel\ModuleApi\DataProviderInterface`. It can be used by
|
||||
extensions that extend the Admin Panel with custom modules and allows storing
|
||||
additional request-related data in the Admin Panel–specific data store.
|
||||
|
||||
The signature of the interface method :php:`getDataToStore()` has changed.
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Extension authors may benefit from the additional argument passed with TYPO3
|
||||
v14, but implementations must be adjusted accordingly.
|
||||
|
||||
Affected installations
|
||||
======================
|
||||
|
||||
Most installations are not affected, as few extensions extend the Admin Panel.
|
||||
Instances with classes implementing
|
||||
:php-short:`\TYPO3\CMS\Adminpanel\ModuleApi\DataProviderInterface` are affected.
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
**Interface until TYPO3 v13:**
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
namespace TYPO3\CMS\Adminpanel\ModuleApi;
|
||||
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
use TYPO3\CMS\Adminpanel\ModuleApi\ModuleData;
|
||||
|
||||
interface DataProviderInterface
|
||||
{
|
||||
public function getDataToStore(
|
||||
ServerRequestInterface $request
|
||||
): ModuleData;
|
||||
}
|
||||
|
||||
The :php:`getDataToStore()` method is called by the Admin Panel after the
|
||||
:php:`Response` has been created by the TYPO3 Core.
|
||||
Starting with TYPO3 v14, the method receives the :php:`ResponseInterface`
|
||||
as an additional argument:
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
use TYPO3\CMS\Adminpanel\ModuleApi\ModuleData;
|
||||
|
||||
public function getDataToStore(
|
||||
ServerRequestInterface $request,
|
||||
ResponseInterface $response
|
||||
): ModuleData;
|
||||
|
||||
**Compatibility example for TYPO3 v13 and v14:**
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
use TYPO3\CMS\Adminpanel\ModuleApi\ModuleData;
|
||||
|
||||
public function getDataToStore(
|
||||
ServerRequestInterface $request,
|
||||
?ResponseInterface $response = null
|
||||
): ModuleData {
|
||||
// TYPO3 v13: $response is null
|
||||
// TYPO3 v14: $response is an instance of ResponseInterface
|
||||
}
|
||||
|
||||
TYPO3 v13 does not pass the second argument, so it must be nullable, and
|
||||
extensions should not expect to receive an instance of
|
||||
:php-short:`\Psr\Http\Message\ResponseInterface`.
|
||||
|
||||
TYPO3 v14, however, provides the response instance automatically.
|
||||
|
||||
.. index:: PHP-API, NotScanned, ext:adminpanel
|
||||
Reference in New Issue
Block a user