.. include:: /Includes.rst.txt .. _deprecation-104684-1724258020: =========================================================== Deprecation: #104684 - Fluid RenderingContext->getRequest() =========================================================== See :issue:`104684` Description =========== The following methods have been marked as deprecated in TYPO3 v13 and will be removed with TYPO3 v14: * :php:`\TYPO3\CMS\Fluid\Core\Rendering\RenderingContext->setRequest()` * :php:`\TYPO3\CMS\Fluid\Core\Rendering\RenderingContext->getRequest()` Impact ====== Calling above methods triggers a deprecation level log entry in TYPO3 v13 and will trigger a fatal PHP error with TYPO3 v14. Affected installations ====================== :php:`RenderingContext->getRequest()` is a relatively common call in custom view helpers. Instances with extensions that deliver custom view helpers may be affected. The extension scanner is *not* configured to find potential places since the method names are common and would lead to too many false positives. Migration ========= Class :php:`\TYPO3\CMS\Fluid\Core\Rendering\RenderingContext` of the Core extension Fluid extends class :php:`\TYPO3Fluid\Fluid\Core\Rendering\RenderingContext` of Fluid standalone and adds the methods :php:`setRequest()` and :php:`getRequest()`. These methods are however not part of :php:`\TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface`. Fluid standalone will not add these methods, since the view of this library should stay free from direct PSR-7 :php-short:`\Psr\Http\Message\ServerRequestInterface` dependencies. Having those methods in ext:fluid :php-short:`\TYPO3\CMS\Fluid\Core\Rendering\RenderingContext` however collides with :php-short:`\TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface`, which is type hinted in Fluid view helper method signatures. Fluid standalone instead added three methods to handle arbitrary additional data in :php-short:`\TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface`: :php:`setAttribute()`, :php:`hasAttribute()` and :php:`getAttribute()`. Those should be used instead. A typical usage in a view helper before: .. code-block:: php /** @var \TYPO3Fluid\Fluid\Core\Rendering\RenderingContext $renderingContext */ $renderingContext = $this->renderingContext; $request = $renderingContext->getRequest(); After: .. code-block:: php // use Psr\Http\Message\ServerRequestInterface $request = null; if ($renderingContext->hasAttribute(ServerRequestInterface::class)) { $request = $renderingContext->getAttribute(ServerRequestInterface::class); } To stay compatible to previous TYPO3 versions while avoiding deprecation notices, the following code can be used: .. code-block:: php // use Psr\Http\Message\ServerRequestInterface if ( method_exists($renderingContext, 'getAttribute') && method_exists($renderingContext, 'hasAttribute') && $renderingContext->hasAttribute(ServerRequestInterface::class) ) { $request = $renderingContext->getAttribute(ServerRequestInterface::class); } else { $request = $renderingContext->getRequest(); } .. index:: Fluid, PHP-API, NotScanned, ext:fluid