diff --git a/typo3/sysext/fluid/Classes/Core/Widget/WidgetRequestBuilder.php b/typo3/sysext/fluid/Classes/Core/Widget/WidgetRequestBuilder.php index df84f9632cae1f0e9ab111aea71c68ed7d633a5f..f1e6a861bd05dc52365e1d693e5108df7a88f7f7 100644 --- a/typo3/sysext/fluid/Classes/Core/Widget/WidgetRequestBuilder.php +++ b/typo3/sysext/fluid/Classes/Core/Widget/WidgetRequestBuilder.php @@ -51,7 +51,17 @@ class WidgetRequestBuilder extends RequestBuilder $baseUri .= TYPO3_mainDir; } - $request = $this->objectManager->get(WidgetRequest::class); + $rawGetArguments = GeneralUtility::_GET(); + if (!isset($rawGetArguments['fluid-widget-id'])) { + // Low level test, WidgetRequestHandler returns false in canHandleRequest () if this is not set + throw new \InvalidArgumentException( + 'No Fluid Widget ID was given.', + 1521190675 + ); + } + $widgetContext = $this->ajaxWidgetContextHolder->get($rawGetArguments['fluid-widget-id']); + + $request = $this->objectManager->get(WidgetRequest::class, $widgetContext->getControllerObjectName()); $request->setRequestUri(GeneralUtility::getIndpEnv('TYPO3_REQUEST_URL')); $request->setBaseUri($baseUri); $request->setMethod($_SERVER['REQUEST_METHOD'] ?? null); @@ -60,18 +70,9 @@ class WidgetRequestBuilder extends RequestBuilder } else { $request->setArguments(GeneralUtility::_GET()); } - $rawGetArguments = GeneralUtility::_GET(); if (isset($rawGetArguments['action'])) { $request->setControllerActionName($rawGetArguments['action']); } - if (!isset($rawGetArguments['fluid-widget-id'])) { - // Low level test, WidgetRequestHandler returns false in canHandleRequest () if this is not set - throw new \InvalidArgumentException( - 'No Fluid Widget ID was given.', - 1521190675 - ); - } - $widgetContext = $this->ajaxWidgetContextHolder->get($rawGetArguments['fluid-widget-id']); $request->setWidgetContext($widgetContext); return $request; } diff --git a/typo3/sysext/fluid/Tests/Unit/Core/Widget/WidgetRequestBuilderTest.php b/typo3/sysext/fluid/Tests/Unit/Core/Widget/WidgetRequestBuilderTest.php index 4bd353ef49287a5544705f4f3f01e9d813157737..0956beb11eb8fde739daf46740bdcfe44e6e714d 100644 --- a/typo3/sysext/fluid/Tests/Unit/Core/Widget/WidgetRequestBuilderTest.php +++ b/typo3/sysext/fluid/Tests/Unit/Core/Widget/WidgetRequestBuilderTest.php @@ -60,7 +60,7 @@ class WidgetRequestBuilderTest extends UnitTestCase $this->widgetRequestBuilder = $this->getAccessibleMock(WidgetRequestBuilder::class, ['setArgumentsFromRawRequestData']); $this->mockWidgetRequest = $this->createMock(WidgetRequest::class); $this->mockObjectManager = $this->createMock(ObjectManagerInterface::class); - $this->mockObjectManager->expects(self::once())->method('get')->with(WidgetRequest::class)->willReturn($this->mockWidgetRequest); + $this->mockObjectManager->expects(self::any())->method('get')->with(WidgetRequest::class)->willReturn($this->mockWidgetRequest); $this->widgetRequestBuilder->_set('objectManager', $this->mockObjectManager); $this->mockWidgetContext = $this->createMock(WidgetContext::class); $this->mockAjaxWidgetContextHolder = $this->createMock(AjaxWidgetContextHolder::class);