TYPO3 v15 dev-main snapshot ()
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
.. 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
|
||||
Reference in New Issue
Block a user