‪TYPO3CMS  10.4
AbstractController.php
Go to the documentation of this file.
1 <?php
2 
3 /*
4  * This file is part of the TYPO3 CMS project.
5  *
6  * It is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU General Public License, either version 2
8  * of the License, or any later version.
9  *
10  * For the full copyright and license information, please read the
11  * LICENSE.txt file that was distributed with this source code.
12  *
13  * The TYPO3 project - inspiring people to share!
14  */
15 
17 
29 use ‪TYPO3\CMS\Extbase\Mvc\Web\Request as WebRequest;
37 
43 {
45 
50  'signalSlotDispatcher' => 'Property ' . self::class . '::$signalSlotDispatcher is deprecated since TYPO3 10.2 and will be removed in TYPO3 11.0',
51  'objectManager' => 'Property ' . self::class . '::$objectManager is deprecated since TYPO3 10.2 and will be removed in TYPO3 11.0',
52  'uriBuilder' => 'Property ' . self::class . '::$uriBuilder is deprecated since TYPO3 10.2 and will be removed in TYPO3 11.0',
53  'settings' => 'Property ' . self::class . '::$settings is deprecated since TYPO3 10.2 and will be removed in TYPO3 11.0',
54  'request' => 'Property ' . self::class . '::$request is deprecated since TYPO3 10.2 and will be removed in TYPO3 11.0',
55  'response' => 'Property ' . self::class . '::$response is deprecated since TYPO3 10.2 and will be removed in TYPO3 11.0',
56  'arguments' => 'Property ' . self::class . '::$arguments is deprecated since TYPO3 10.2 and will be removed in TYPO3 11.0',
57  'validatorResolver' => 'Property ' . self::class . '::$validatorResolver is deprecated since TYPO3 10.2 and will be removed in TYPO3 11.0',
58  'supportedRequestTypes' => 'Property ' . self::class . '::$supportedRequestTypes is deprecated since TYPO3 10.2 and will be removed in TYPO3 11.0',
59  'controllerContext' => 'Property ' . self::class . '::$controllerContext is deprecated since TYPO3 10.2 and will be removed in TYPO3 11.0',
60  'configurationManager' => 'Property ' . self::class . '::$configurationManager is deprecated since TYPO3 10.2 and will be removed in TYPO3 11.0',
61  ];
62 
67 
71  private ‪$objectManager;
72 
76  private ‪$uriBuilder;
77 
83  private ‪$settings;
84 
90  private ‪$request;
91 
97  private ‪$response;
98 
102  private ‪$validatorResolver;
103 
107  private ‪$arguments;
108 
113  {
114  $this->signalSlotDispatcher = ‪$signalSlotDispatcher;
115  }
116 
121  {
122  $this->validatorResolver = ‪$validatorResolver;
123  }
124 
132  private ‪$supportedRequestTypes = [\TYPO3\CMS\Extbase\Mvc\Request::class];
133 
137  private ‪$controllerContext;
138 
142  public function ‪getControllerContext()
143  {
144  trigger_error(
145  __METHOD__ . ' is deprecated since TYPO3 10.2 and will be removed in version 11.0',
146  E_USER_DEPRECATED
147  );
148 
150  }
151 
155  private ‪$configurationManager;
156 
161  {
162  $this->configurationManager = ‪$configurationManager;
163  $this->settings = $this->configurationManager->‪getConfiguration(‪ConfigurationManagerInterface::CONFIGURATION_TYPE_SETTINGS);
164  }
165 
172  {
173  $this->objectManager = ‪$objectManager;
174  $this->arguments = $this->objectManager->‪get(Arguments::class);
175  }
176 
188  public function ‪addFlashMessage($messageBody, $messageTitle = '', $severity = ‪AbstractMessage::OK, $storeInSession = true)
189  {
190  trigger_error(
191  __METHOD__ . ' is deprecated since TYPO3 10.2 and will be removed in version 11.0',
192  E_USER_DEPRECATED
193  );
194 
195  if (!is_string($messageBody)) {
196  throw new \InvalidArgumentException('The message body must be of type string, "' . gettype($messageBody) . '" given.', 1243258395);
197  }
198  /* @var \TYPO3\CMS\Core\Messaging\FlashMessage $flashMessage */
199  $flashMessage = GeneralUtility::makeInstance(
200  FlashMessage::class,
201  (string)$messageBody,
202  (string)$messageTitle,
203  $severity,
204  $storeInSession
205  );
206  $this->controllerContext->getFlashMessageQueue()->enqueue($flashMessage);
207  }
208 
221  {
222  trigger_error(
223  __METHOD__ . ' is deprecated since TYPO3 10.2 and will be removed in version 11.0',
224  E_USER_DEPRECATED
225  );
226 
227  foreach ($this->supportedRequestTypes as $supportedRequestType) {
228  if (‪$request instanceof $supportedRequestType) {
229  return true;
230  }
231  }
232  return false;
233  }
234 
244  {
245  trigger_error(
246  __METHOD__ . ' is deprecated since TYPO3 10.2 and will be removed in version 11.0',
247  E_USER_DEPRECATED
248  );
249 
250  if (!$this->‪canProcessRequest($request)) {
251  throw new UnsupportedRequestTypeException(static::class . ' does not support requests of type "' . get_class(‪$request) . '". Supported types are: ' . implode(' ', $this->supportedRequestTypes), 1187701132);
252  }
253  if (‪$response instanceof Response && ‪$request instanceof WebRequest) {
254  ‪$response->setRequest(‪$request);
255  }
256  $this->request = ‪$request;
257  $this->request->‪setDispatched(true);
258  $this->response = ‪$response;
259  $this->uriBuilder = $this->objectManager->get(UriBuilder::class);
260  $this->uriBuilder->setRequest(‪$request);
263  $this->controllerContext = $this->‪buildControllerContext();
264  }
265 
272  protected function ‪buildControllerContext()
273  {
274  trigger_error(
275  __METHOD__ . ' is deprecated since TYPO3 10.2 and will be removed in version 11.0',
276  E_USER_DEPRECATED
277  );
278 
280  ‪$controllerContext = $this->objectManager->get(ControllerContext::class);
281  ‪$controllerContext->‪setRequest($this->request);
282  ‪$controllerContext->‪setResponse($this->response);
283  if ($this->arguments !== null) {
284  ‪$controllerContext->‪setArguments($this->arguments);
285  }
286  ‪$controllerContext->‪setUriBuilder($this->uriBuilder);
287 
288  return ‪$controllerContext;
289  }
290 
305  public function ‪forward($actionName, $controllerName = null, $extensionName = null, array ‪$arguments = null)
306  {
307  trigger_error(
308  __METHOD__ . ' is deprecated since TYPO3 10.2 and will be removed in version 11.0',
309  E_USER_DEPRECATED
310  );
311 
312  $this->request->setDispatched(false);
313  if ($this->request instanceof WebRequest) {
314  $this->request->setControllerActionName($actionName);
315  if ($controllerName !== null) {
316  $this->request->setControllerName($controllerName);
317  }
318  if ($extensionName !== null) {
319  $this->request->setControllerExtensionName($extensionName);
320  }
321  }
322  if (‪$arguments !== null) {
323  $this->request->setArguments(‪$arguments);
324  }
325  throw new StopActionException('forward', 1476045801);
326  }
327 
348  protected function ‪redirect($actionName, $controllerName = null, $extensionName = null, array ‪$arguments = null, $pageUid = null, $delay = 0, $statusCode = 303)
349  {
350  trigger_error(
351  __METHOD__ . ' is deprecated since TYPO3 10.2 and will be removed in version 11.0',
352  E_USER_DEPRECATED
353  );
354 
355  if (!$this->request instanceof WebRequest) {
356  throw new UnsupportedRequestTypeException('redirect() only supports web requests.', 1220539734);
357  }
358  if ($controllerName === null) {
359  $controllerName = $this->request->getControllerName();
360  }
361  $this->uriBuilder->reset()->setCreateAbsoluteUri(true);
363  $this->uriBuilder->setTargetPageUid((int)$pageUid);
364  }
365  if (GeneralUtility::getIndpEnv('TYPO3_SSL')) {
366  $this->uriBuilder->setAbsoluteUriScheme('https');
367  }
368  $uri = $this->uriBuilder->uriFor($actionName, ‪$arguments, $controllerName, $extensionName);
369  $this->‪redirectToUri($uri, $delay, $statusCode);
370  }
371 
384  protected function ‪redirectToUri($uri, $delay = 0, $statusCode = 303)
385  {
386  trigger_error(
387  __METHOD__ . ' is deprecated since TYPO3 10.2 and will be removed in version 11.0',
388  E_USER_DEPRECATED
389  );
390 
391  if (!$this->request instanceof WebRequest) {
392  throw new UnsupportedRequestTypeException('redirect() only supports web requests.', 1220539735);
393  }
394 
395  $this->objectManager->get(CacheService::class)->clearCachesOfRegisteredPageIds();
396 
397  $uri = $this->‪addBaseUriIfNecessary($uri);
398  $escapedUri = htmlentities($uri, ENT_QUOTES, 'utf-8');
399  $this->response->setContent('<html><head><meta http-equiv="refresh" content="' . (int)$delay . ';url=' . $escapedUri . '"/></head></html>');
400  if ($this->response instanceof Response) {
401  $this->response->setStatus($statusCode);
402  $this->response->setHeader('Location', (string)$uri);
403  }
404  // Avoid caching the plugin when we issue a redirect response
405  // This means that even when an action is configured as cachable
406  // we avoid the plugin to be cached, but keep the page cache untouched
407  $contentObject = $this->configurationManager->getContentObject();
408  if ($contentObject->getUserObjectType() === ‪ContentObjectRenderer::OBJECTTYPE_USER) {
409  $contentObject->convertToUserIntObject();
410  }
411 
412  throw new ‪StopActionException('redirectToUri', 1476045828);
413  }
414 
422  protected function ‪addBaseUriIfNecessary($uri)
423  {
424  trigger_error(
425  __METHOD__ . ' is deprecated since TYPO3 10.2 and will be removed in version 11.0',
426  E_USER_DEPRECATED
427  );
428 
429  return GeneralUtility::locationHeaderUrl((string)$uri);
430  }
431 
444  public function ‪throwStatus($statusCode, $statusMessage = null, $content = null)
445  {
446  trigger_error(
447  __METHOD__ . ' is deprecated since TYPO3 10.2 and will be removed in version 11.0',
448  E_USER_DEPRECATED
449  );
450 
451  if (!$this->request instanceof WebRequest) {
452  throw new UnsupportedRequestTypeException('throwStatus() only supports web requests.', 1220539739);
453  }
454  if ($this->response instanceof Response) {
455  $this->response->setStatus($statusCode, $statusMessage);
456  if ($content === null) {
457  $content = $this->response->getStatus();
458  }
459  }
460  $this->response->setContent($content);
461  throw new ‪StopActionException('throwStatus', 1476045871);
462  }
463 
470  {
471  trigger_error(
472  __METHOD__ . ' is deprecated since TYPO3 10.2 and will be removed in version 11.0',
473  E_USER_DEPRECATED
474  );
475 
477  foreach ($this->arguments as $argument) {
478  ‪$validator = $this->validatorResolver->getBaseValidatorConjunction($argument->getDataType());
479  if (‪$validator !== null) {
480  $argument->setValidator(‪$validator);
481  }
482  }
483  }
484 
492  {
493  trigger_error(
494  __METHOD__ . ' is deprecated since TYPO3 10.2 and will be removed in version 11.0',
495  E_USER_DEPRECATED
496  );
497 
499  foreach ($this->arguments as $argument) {
500  $argumentName = $argument->getName();
501  if ($this->request->hasArgument($argumentName)) {
502  $argument->setValue($this->request->getArgument($argumentName));
503  } elseif ($argument->isRequired()) {
504  throw new RequiredArgumentMissingException('Required argument "' . $argumentName . '" is not set for ' . $this->request->getControllerObjectName() . '->' . $this->request->getControllerActionName() . '.', 1298012500);
505  }
506  }
507  }
508 }
‪TYPO3\CMS\Extbase\Mvc\Controller\AbstractController\injectSignalSlotDispatcher
‪injectSignalSlotDispatcher(Dispatcher $signalSlotDispatcher)
Definition: AbstractController.php:103
‪TYPO3\CMS\Extbase\Mvc\Controller\AbstractController\initializeControllerArgumentsBaseValidators
‪initializeControllerArgumentsBaseValidators()
Definition: AbstractController.php:457
‪TYPO3\CMS\Extbase\Mvc\Controller\AbstractController\addFlashMessage
‪addFlashMessage($messageBody, $messageTitle='', $severity=AbstractMessage::OK, $storeInSession=true)
Definition: AbstractController.php:176
‪TYPO3\CMS\Extbase\Mvc\Exception\StopActionException
Definition: StopActionException.php:31
‪TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer\OBJECTTYPE_USER
‪const OBJECTTYPE_USER
Definition: ContentObjectRenderer.php:436
‪TYPO3\CMS\Extbase\Mvc\Controller\AbstractController\processRequest
‪processRequest(RequestInterface $request, ResponseInterface $response)
Definition: AbstractController.php:231
‪TYPO3\CMS\Core\Messaging\AbstractMessage
Definition: AbstractMessage.php:26
‪TYPO3\CMS\Core\Utility\MathUtility\canBeInterpretedAsInteger
‪static bool canBeInterpretedAsInteger($var)
Definition: MathUtility.php:74
‪TYPO3\CMS\Extbase\Mvc\Exception\UnsupportedRequestTypeException
Definition: UnsupportedRequestTypeException.php:26
‪TYPO3\CMS\Extbase\Mvc\Controller\AbstractController\injectConfigurationManager
‪injectConfigurationManager(ConfigurationManagerInterface $configurationManager)
Definition: AbstractController.php:148
‪TYPO3\CMS\Extbase\Mvc\Controller\AbstractController\canProcessRequest
‪bool canProcessRequest(RequestInterface $request)
Definition: AbstractController.php:208
‪TYPO3\CMS\Extbase\Mvc\Controller\AbstractController\injectObjectManager
‪injectObjectManager(ObjectManagerInterface $objectManager)
Definition: AbstractController.php:159
‪TYPO3\CMS\Extbase\Annotation
Definition: IgnoreValidation.php:18
‪TYPO3\CMS\Extbase\Mvc\Controller\Exception\RequiredArgumentMissingException
Definition: RequiredArgumentMissingException.php:26
‪TYPO3\CMS\Extbase\Mvc\Controller\AbstractController\$uriBuilder
‪TYPO3 CMS Extbase Mvc Web Routing UriBuilder $uriBuilder
Definition: AbstractController.php:72
‪TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder
Definition: UriBuilder.php:39
‪TYPO3\CMS\Extbase\Mvc\ResponseInterface
Definition: ResponseInterface.php:22
‪TYPO3\CMS\Extbase\Validation\ValidatorResolver
Definition: ValidatorResolver.php:35
‪TYPO3\CMS\Extbase\Mvc\Controller\AbstractController\throwStatus
‪throwStatus($statusCode, $statusMessage=null, $content=null)
Definition: AbstractController.php:432
‪TYPO3
‪TYPO3\CMS\Extbase\Mvc\Controller\AbstractController\mapRequestArgumentsToControllerArguments
‪mapRequestArgumentsToControllerArguments()
Definition: AbstractController.php:479
‪TYPO3\CMS\Extbase\Mvc\Controller\ControllerContext
Definition: ControllerContext.php:28
‪TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface
Definition: ConfigurationManagerInterface.php:28
‪TYPO3\CMS\Extbase\Mvc\Controller\AbstractController\buildControllerContext
‪TYPO3 CMS Extbase Mvc Controller ControllerContext buildControllerContext()
Definition: AbstractController.php:260
‪TYPO3\CMS\Extbase\Mvc\Controller\AbstractController\getControllerContext
‪ControllerContext getControllerContext()
Definition: AbstractController.php:131
‪TYPO3\CMS\Extbase\Mvc\Controller
Definition: AbstractController.php:16
‪TYPO3\CMS\Extbase\Mvc\Controller\AbstractController\$response
‪TYPO3 CMS Extbase Mvc ResponseInterface $response
Definition: AbstractController.php:90
‪TYPO3\CMS\Extbase\Object\ObjectManagerInterface
Definition: ObjectManagerInterface.php:26
‪TYPO3\CMS\Extbase\Mvc\Controller\AbstractController\$configurationManager
‪ConfigurationManagerInterface $configurationManager
Definition: AbstractController.php:143
‪TYPO3\CMS\Extbase\Mvc\Response
Definition: Response.php:26
‪TYPO3\CMS\Extbase\Mvc\Controller\AbstractController\$validatorResolver
‪TYPO3 CMS Extbase Validation ValidatorResolver $validatorResolver
Definition: AbstractController.php:94
‪TYPO3\CMS\Extbase\Mvc\RequestInterface\setDispatched
‪setDispatched($flag)
‪TYPO3\CMS\Extbase\Mvc\Controller\AbstractController\injectValidatorResolver
‪injectValidatorResolver(ValidatorResolver $validatorResolver)
Definition: AbstractController.php:111
‪TYPO3\CMS\Extbase\Mvc\Controller\ControllerContext\setUriBuilder
‪setUriBuilder(UriBuilder $uriBuilder)
Definition: ControllerContext.php:136
‪TYPO3\CMS\Extbase\Mvc\Web\Response
Definition: Response.php:26
‪TYPO3\CMS\Extbase\Mvc\Controller\AbstractController
Definition: AbstractController.php:43
‪$validator
‪if(isset($args['d'])) $validator
Definition: validateRstFiles.php:218
‪TYPO3\CMS\Extbase\Mvc\Controller\AbstractController\redirect
‪redirect($actionName, $controllerName=null, $extensionName=null, array $arguments=null, $pageUid=null, $delay=0, $statusCode=303)
Definition: AbstractController.php:336
‪TYPO3\CMS\Extbase\Mvc\Controller\AbstractController\$signalSlotDispatcher
‪TYPO3 CMS Extbase SignalSlot Dispatcher $signalSlotDispatcher
Definition: AbstractController.php:64
‪TYPO3\CMS\Extbase\Mvc\Controller\AbstractController\$controllerContext
‪TYPO3 CMS Extbase Mvc Controller ControllerContext $controllerContext
Definition: AbstractController.php:126
‪TYPO3\CMS\Extbase\Mvc\Web\Request
Definition: Request.php:23
‪TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface\getConfiguration
‪array getConfiguration(string $configurationType, ?string $extensionName=null, ?string $pluginName=null)
‪TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface\CONFIGURATION_TYPE_SETTINGS
‪const CONFIGURATION_TYPE_SETTINGS
Definition: ConfigurationManagerInterface.php:30
‪TYPO3\CMS\Extbase\Mvc\Controller\AbstractController\$objectManager
‪TYPO3 CMS Extbase Object ObjectManagerInterface $objectManager
Definition: AbstractController.php:68
‪TYPO3\CMS\Core\Messaging\AbstractMessage\OK
‪const OK
Definition: AbstractMessage.php:29
‪TYPO3\CMS\Extbase\Mvc\Controller\AbstractController\$deprecatedPublicProperties
‪array $deprecatedPublicProperties
Definition: AbstractController.php:48
‪TYPO3\CMS\Extbase\Mvc\Controller\AbstractController\redirectToUri
‪redirectToUri($uri, $delay=0, $statusCode=303)
Definition: AbstractController.php:372
‪TYPO3\CMS\Extbase\Mvc\RequestInterface
Definition: RequestInterface.php:22
‪TYPO3\CMS\Core\Messaging\FlashMessage
Definition: FlashMessage.php:24
‪TYPO3\CMS\Extbase\Mvc\Controller\AbstractController\$arguments
‪TYPO3 CMS Extbase Mvc Controller Arguments $arguments
Definition: AbstractController.php:98
‪TYPO3\CMS\Extbase\Service\CacheService
Definition: CacheService.php:28
‪TYPO3\CMS\Core\Utility\MathUtility
Definition: MathUtility.php:22
‪TYPO3\CMS\Extbase\Mvc\Controller\ControllerContext\setArguments
‪setArguments(Arguments $arguments)
Definition: ControllerContext.php:118
‪TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer
Definition: ContentObjectRenderer.php:97
‪TYPO3\CMS\Extbase\Mvc\Controller\ControllerInterface
Definition: ControllerInterface.php:25
‪TYPO3\CMS\Extbase\Mvc\Controller\AbstractController\$supportedRequestTypes
‪array $supportedRequestTypes
Definition: AbstractController.php:122
‪TYPO3\CMS\Extbase\Mvc\Controller\AbstractController\addBaseUriIfNecessary
‪string addBaseUriIfNecessary($uri)
Definition: AbstractController.php:410
‪TYPO3\CMS\Core\Compatibility\PublicPropertyDeprecationTrait
Definition: PublicPropertyDeprecationTrait.php:68
‪TYPO3\CMS\Extbase\Mvc\Controller\AbstractController\$settings
‪array $settings
Definition: AbstractController.php:78
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:46
‪TYPO3\CMS\Extbase\Mvc\Controller\AbstractController\$request
‪TYPO3 CMS Extbase Mvc RequestInterface $request
Definition: AbstractController.php:84
‪TYPO3\CMS\Extbase\Mvc\Controller\ControllerContext\setResponse
‪setResponse(Response $response)
Definition: ControllerContext.php:98
‪TYPO3\CMS\Extbase\Object\ObjectManagerInterface\get
‪object &T get(string $className,... $constructorArguments)
‪TYPO3\CMS\Extbase\Mvc\Controller\ControllerContext\setRequest
‪setRequest(Request $request)
Definition: ControllerContext.php:78
‪TYPO3\CMS\Extbase\Mvc\Controller\AbstractController\forward
‪forward($actionName, $controllerName=null, $extensionName=null, array $arguments=null)
Definition: AbstractController.php:293
‪TYPO3\CMS\Extbase\SignalSlot\Dispatcher
Definition: Dispatcher.php:126