126 $className = static::class;
127 $classNameParts = explode(
'\\', $className, 4);
129 if (strpos($className,
'TYPO3\\CMS\\') === 0) {
130 $this->extensionName = $classNameParts[2];
132 $this->extensionName = $classNameParts[1];
153 $this->arguments = $this->objectManager->
get(\
TYPO3\CMS\
Extbase\Mvc\Controller\Arguments::class);
166 public function addFlashMessage($messageBody, $messageTitle =
'', $severity = \
TYPO3\CMS\Core\Messaging\AbstractMessage::OK, $storeInSession =
true)
168 if (!is_string($messageBody)) {
169 throw new \InvalidArgumentException(
'The message body must be of type string, "' . gettype($messageBody) .
'" given.', 1243258395);
172 $flashMessage = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(
173 \
TYPO3\CMS\Core\Messaging\FlashMessage::class,
174 (
string)$messageBody,
175 (
string)$messageTitle,
179 $this->controllerContext->getFlashMessageQueue()->enqueue($flashMessage);
194 foreach ($this->supportedRequestTypes as $supportedRequestType) {
195 if (
$request instanceof $supportedRequestType) {
212 throw new UnsupportedRequestTypeException(static::class .
' does not support requests of type "' . get_class(
$request) .
'". Supported types are: ' . implode(
' ', $this->supportedRequestTypes), 1187701132);
220 $this->uriBuilder = $this->objectManager->get(\
TYPO3\CMS\
Extbase\Mvc\Web\Routing\UriBuilder::class);
221 $this->uriBuilder->setRequest(
$request);
238 if ($this->arguments !==
null) {
261 $this->request->setDispatched(
false);
262 if ($this->request instanceof WebRequest) {
263 $this->request->setControllerActionName($actionName);
264 if ($controllerName !==
null) {
265 $this->request->setControllerName($controllerName);
274 throw new StopActionException(
'forward', 1476045801);
298 if (!$this->request instanceof WebRequest) {
299 throw new UnsupportedRequestTypeException(
'redirect() only supports web requests.', 1220539734);
301 if ($controllerName ===
null) {
302 $controllerName = $this->request->getControllerName();
304 $this->uriBuilder->reset()->setTargetPageUid($pageUid)->setCreateAbsoluteUri(
true);
305 if (\
TYPO3\CMS\Core\Utility\GeneralUtility::getIndpEnv(
'TYPO3_SSL')) {
306 $this->uriBuilder->setAbsoluteUriScheme(
'https');
323 protected function redirectToUri($uri, $delay = 0, $statusCode = 303)
325 if (!$this->request instanceof WebRequest) {
329 $this->objectManager->get(\
TYPO3\CMS\
Extbase\Service\CacheService::class)->clearCachesOfRegisteredPageIds();
332 $escapedUri = htmlentities($uri, ENT_QUOTES,
'utf-8');
333 $this->response->setContent(
'<html><head><meta http-equiv="refresh" content="' . (
int)$delay .
';url=' . $escapedUri .
'"/></head></html>');
335 $this->response->setStatus($statusCode);
336 $this->response->setHeader(
'Location', (
string)$uri);
341 $contentObject = $this->configurationManager->getContentObject();
342 if ($contentObject->getUserObjectType() === \
TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer::OBJECTTYPE_USER) {
343 $contentObject->convertToUserIntObject();
357 return \TYPO3\CMS\Core\Utility\GeneralUtility::locationHeaderUrl((
string)$uri);
371 public function throwStatus($statusCode, $statusMessage =
null, $content =
null)
373 if (!$this->request instanceof WebRequest) {
377 $this->response->setStatus($statusCode, $statusMessage);
378 if ($content ===
null) {
379 $content = $this->response->getStatus();
382 $this->response->setContent($content);
383 throw new StopActionException(
'throwStatus', 1476045871);
393 foreach ($this->arguments as $argument) {
394 $validator = $this->validatorResolver->getBaseValidatorConjunction($argument->getDataType());
409 foreach ($this->arguments as $argument) {
410 $argumentName = $argument->getName();
411 if ($this->request->hasArgument($argumentName)) {
412 $argument->setValue($this->request->getArgument($argumentName));
413 } elseif ($argument->isRequired()) {
414 throw new \TYPO3\CMS\Extbase\Mvc\Controller\Exception\RequiredArgumentMissingException(
'Required argument "' . $argumentName .
'" is not set for ' . $this->request->getControllerObjectName() .
'->' . $this->request->getControllerActionName() .
'.', 1298012500);