/** * A special action which is called if the originally intended action could * not be called, for example if the arguments were not valid. * * The default implementation sets a flash message, request errors and forwards back * to the originating action. This is suitable for most actions dealing with form input. * * We clear the page cache by default on an error as well, as we need to make sure the * data is re-evaluated when the user changes something. * * @return string */ protected function errorAction() { echo 'ErrorAction'; $this->clearCacheOnError(); if ($this->configurationManager->isFeatureEnabled('rewrittenPropertyMapper')) { echo 'Rewritten Property Mapper'; echo '
';
			foreach ($this->arguments->getValidationResults()->getFlattenedErrors() as $propertyPath => $errors) {
				foreach ($errors as $error) {
					$message .= 'Error for ' . $propertyPath . ': ' . $error->render() .
						PHP_EOL;
				}
				echo 'Error: ' . $message;
	
			}
			echo '
'; $errorFlashMessage = $this->getErrorFlashMessage(); if ($errorFlashMessage !== FALSE) { $errorFlashMessageObject = new \TYPO3\CMS\Core\Messaging\FlashMessage( $errorFlashMessage, '', \TYPO3\CMS\Core\Messaging\FlashMessage::ERROR ); $this->controllerContext->getFlashMessageQueue()->enqueue($errorFlashMessageObject); } $referringRequest = $this->request->getReferringRequest(); if ($referringRequest !== NULL) { $originalRequest = clone $this->request; $this->request->setOriginalRequest($originalRequest); $this->request->setOriginalRequestMappingResults($this->arguments->getValidationResults()); $this->forward($referringRequest->getControllerActionName(), $referringRequest->getControllerName(), $referringRequest->getControllerExtensionName(), $referringRequest->getArguments()); } $message = 'An error occurred while trying to call ' . get_class($this) . '->' . $this->actionMethodName . '().' . PHP_EOL; return $message; } else { // @deprecated since Extbase 1.4.0, will be removed two versions after Extbase 6.1 $this->request->setErrors($this->argumentsMappingResults->getErrors()); $errorFlashMessage = $this->getErrorFlashMessage(); if ($errorFlashMessage !== FALSE) { $errorFlashMessageObject = new \TYPO3\CMS\Core\Messaging\FlashMessage( $errorFlashMessage, '', \TYPO3\CMS\Core\Messaging\FlashMessage::ERROR ); $this->controllerContext->getFlashMessageQueue()->enqueue($errorFlashMessageObject); } $referrer = $this->request->getInternalArgument('__referrer'); if ($referrer !== NULL) { $this->forward($referrer['actionName'], $referrer['controllerName'], $referrer['extensionName'], $this->request->getArguments()); } $message = 'An error occurred while trying to call ' . get_class($this) . '->' . $this->actionMethodName . '().' . PHP_EOL; return $message; } }