diff --git a/typo3/sysext/core/Documentation/Changelog/master/Feature-78842-LetFluidtemplateMimicAnActualExtbaseWebRequest.rst b/typo3/sysext/core/Documentation/Changelog/master/Feature-78842-LetFluidtemplateMimicAnActualExtbaseWebRequest.rst new file mode 100644 index 0000000000000000000000000000000000000000..d58fb6d0fe86c15fd1760bc59869e4c83ee77f99 --- /dev/null +++ b/typo3/sysext/core/Documentation/Changelog/master/Feature-78842-LetFluidtemplateMimicAnActualExtbaseWebRequest.rst @@ -0,0 +1,40 @@ +.. include:: ../../Includes.txt + +======================================================================= +Feature: #78842 - Let FLUIDTEMPLATE mimic an actual extbase web request +======================================================================= + +See :issue:`78842` + +Description +=========== + +Adds the possibility to let the FLUIDTEMPLATE content element mimic an +actual extbase web request. +This makes it possible to access submitted data like in extbase with +...->controllerContext->getRequest()->getArguments() + + +Impact +====== + +Data which was submitted through a FLUIDTEMPLATE content element are now +available within +... $view->getRenderingContext() + ->getControllerContext() + ->getRequest() + ->getArguments() + + +Affected Installations +====================== + +Any installation which use the FLUIDTEMPLATE content element which are +initialized with the following settings: + +extbase.pluginName +extbase.controllerExtensionName +extbase.controllerName +extbase.controllerActionName + +.. index:: Frontend diff --git a/typo3/sysext/frontend/Classes/ContentObject/FluidTemplateContentObject.php b/typo3/sysext/frontend/Classes/ContentObject/FluidTemplateContentObject.php index fa1f2cc18047a93b9d26a98b7e784a03b0bb84b7..1562137e450c75bb163c38c5044f0a8e758e9e96 100644 --- a/typo3/sysext/frontend/Classes/ContentObject/FluidTemplateContentObject.php +++ b/typo3/sysext/frontend/Classes/ContentObject/FluidTemplateContentObject.php @@ -16,6 +16,9 @@ namespace TYPO3\CMS\Frontend\ContentObject; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Core\Utility\StringUtility; +use TYPO3\CMS\Extbase\Configuration\ConfigurationManager; +use TYPO3\CMS\Extbase\Mvc\Web\RequestBuilder; +use TYPO3\CMS\Extbase\Object\ObjectManager; use TYPO3\CMS\Extbase\Service\TypoScriptService; use TYPO3\CMS\Fluid\View\StandaloneView; @@ -240,6 +243,32 @@ class FluidTemplateContentObject extends AbstractContentObject if ($requestControllerActionName) { $this->view->getRequest()->setControllerActionName($requestControllerActionName); } + + if ( + $requestPluginName + && $requestControllerExtensionName + && $requestControllerName + && $requestControllerActionName + ) { + $configurationManager = GeneralUtility::makeInstance(ObjectManager::class)->get(ConfigurationManager::class); + $configurationManager->setConfiguration([ + 'extensionName' => $requestControllerExtensionName, + 'pluginName' => $requestPluginName, + ]); + + if (!isset($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions'][$requestControllerExtensionName]['plugins'][$requestPluginName]['controllers'])) { + $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions'][$requestControllerExtensionName]['plugins'][$requestPluginName]['controllers'] = [ + $requestControllerName => [ + 'actions' => [ + $requestControllerActionName, + ], + ], + ]; + } + + $requestBuilder = GeneralUtility::makeInstance(ObjectManager::class)->get(RequestBuilder::class); + $this->view->getRenderingContext()->getControllerContext()->setRequest($requestBuilder->build()); + } } /**