.. include:: /Includes.rst.txt .. _breaking-92502: =========================================================== Breaking: #92502 - Make Extbase handle PSR-7 responses only =========================================================== See :issue:`92502` Description =========== Extbase does no longer handle/return extbase responses whose api was defined by the interface :php:`TYPO3\CMS\Extbase\Mvc\ResponseInterface`. Instead, Extbase does create a `PSR-7` compatible response object (see :php:`Psr\Http\Message\ResponseInterface`) and passes it back through the request handling stack. Since `PSR-7` requires response objects to be immutable, it no longer makes sense to expose the response object to the user via :php:`TYPO3\CMS\Extbase\Mvc\Controller\ActionController::$response` and :php:`TYPO3\CMS\Extbase\Mvc\Controller\ControllerContext->getResponse()`. The following interface has been removed and is no longer usable: - :php:`TYPO3\CMS\Extbase\Mvc\ResponseInterface` The following class has been removed and is no longer usable: - :php:`TYPO3\CMS\Extbase\Mvc\Response` Impact ====== Since interface :php:`TYPO3\CMS\Extbase\Mvc\ResponseInterface` and class :php:`TYPO3\CMS\Extbase\Mvc\Response` have been removed, they can no longer be used. Affected Installations ====================== All installations that: * declared classes that implemented the interface :php:`TYPO3\CMS\Extbase\Mvc\ResponseInterface` * instantiated or extended class :php:`TYPO3\CMS\Extbase\Mvc\Response` * accessed the request object through :php:`TYPO3\CMS\Extbase\Mvc\Controller\ActionController::$response` or :php:`TYPO3\CMS\Extbase\Mvc\Controller\ControllerContext->getResponse()` Migration ========= To regain full control over the response object, a PSR-7 compatible response object SHOULD be created in the controller action and returned instead of returning a string or void. Example: .. code-block:: php public function listAction() { // do your action stuff return $this->htmlResponse(); } .. note:: If no argument is given to :php:`$this->htmlResponse()`, the current view is automatically rendered, and applied as content for the PSR-7 Response. For more information about this topic, please refer to the corresponding :doc:`changelog <../11.0/Deprecation-92784-ExtbaseControllerActionsMustReturnResponseInterface>`. Further: Method :php:`TYPO3\CMS\Extbase\Mvc\Response::addAdditionalHeaderData()` had been used to add additional header data such as css or js to the global TypoScriptFrontendController. This has to be done via :php:`TYPO3\CMS\Core\Page\AssetCollector` now. .. index:: PHP-API, NotScanned, ext:extbase