Records module if a wizard-link has been clicked in FormEngine. * * @internal This class is a specific Backend controller implementation and is not considered part of the Public TYPO3 API. */ class ListController { /** * Injects the request object for the current request or sub request */ public function mainAction(ServerRequestInterface $request): ResponseInterface { $parsedBody = $request->getParsedBody(); $queryParams = $request->getQueryParams(); // Wizard parameters, coming from FormEngine linking to this wizard. $parameters = $parsedBody['P'] ?? $queryParams['P'] ?? null; $id = $parsedBody['id'] ?? $queryParams['id'] ?? null; $table = $parameters['table'] ?? ''; $origRow = BackendUtility::getRecord($table, $parameters['uid']); $tsConfig = FormEngineUtility::getTCEFORM_TSconfig($table, $origRow ?? ['pid' => $parameters['pid'] ?? 0]); if (str_starts_with($parameters['params']['pid'], '###') && substr($parameters['params']['pid'], -3) === '###') { $keyword = substr($parameters['params']['pid'], 3, -3); if (str_starts_with($keyword, 'PAGE_TSCONFIG_')) { $pid = (int)$tsConfig[$parameters['field']][$keyword]; } else { $pid = (int)$tsConfig['_' . $keyword]; } } else { $pid = (int)$parameters['params']['pid']; } if ((string)$id !== '') { // If pid is blank $redirectUrl = GeneralUtility::sanitizeLocalUrl($parameters['returnUrl'], $request); } else { // Otherwise, show the list $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class); $normalizedParams = $request->getAttribute('normalizedParams'); $requestUri = $normalizedParams->getRequestUri(); $urlParameters = []; $urlParameters['id'] = $pid; $urlParameters['table'] = $parameters['params']['table']; $urlParameters['returnUrl'] = !empty($parameters['returnUrl']) ? GeneralUtility::sanitizeLocalUrl($parameters['returnUrl'], $request) : $requestUri; $redirectUrl = (string)$uriBuilder->buildUriFromRoute('records', $urlParameters); } return new RedirectResponse($redirectUrl); } }