/** * Builds a web request object from the raw HTTP information and the configuration * * @return \TYPO3\CMS\Extbase\Mvc\Web\Request The web request as an object */ public function build() { $this->loadDefaultValues(); $pluginNamespace = $this->extensionService->getPluginNamespace($this->extensionName, $this->pluginName); $parameters = \TYPO3\CMS\Core\Utility\GeneralUtility::_GPmerged($pluginNamespace); $files = $this->untangleFilesArray($_FILES); if (isset($files[$pluginNamespace]) && is_array($files[$pluginNamespace])) { $parameters = array_replace_recursive($parameters, $files[$pluginNamespace]); } $controllerName = $this->resolveControllerName($parameters); $actionName = $this->resolveActionName($controllerName, $parameters); /** @var $request \TYPO3\CMS\Extbase\Mvc\Web\Request */ $request = $this->objectManager->get(\TYPO3\CMS\Extbase\Mvc\Web\Request::class); if ($this->vendorName !== null) { $request->setControllerVendorName($this->vendorName); } $request->setPluginName($this->pluginName); $request->setControllerExtensionName($this->extensionName); $request->setControllerName($controllerName); $request->setControllerActionName($actionName); $request->setRequestUri(\TYPO3\CMS\Core\Utility\GeneralUtility::getIndpEnv('TYPO3_REQUEST_URL')); $request->setBaseUri(\TYPO3\CMS\Core\Utility\GeneralUtility::getIndpEnv('TYPO3_SITE_URL')); $request->setMethod($this->environmentService->getServerRequestMethod()); if (is_string($parameters['format']) && $parameters['format'] !== '') { $request->setFormat(filter_var($parameters['format'], FILTER_SANITIZE_STRING)); } else { $request->setFormat($this->defaultFormat); } foreach ($parameters as $argumentName => $argumentValue) { $request->setArgument($argumentName, $argumentValue); } return $request; }