‪TYPO3CMS  10.4
ActionController.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 
18 use Psr\EventDispatcher\EventDispatcherInterface;
49 use TYPO3Fluid\Fluid\View\TemplateView;
50 
55 {
59  protected ‪$reflectionService;
60 
64  protected ‪$cacheService;
65 
69  protected ‪$hashService;
70 
74  private ‪$viewResolver;
75 
81  protected ‪$view;
82 
89  protected ‪$defaultViewObjectName = \TYPO3\CMS\Fluid\View\TemplateView::class;
90 
96  protected ‪$actionMethodName = 'indexAction';
97 
103  protected ‪$errorMethodName = 'errorAction';
104 
109 
113  protected ‪$eventDispatcher;
114 
120  protected ‪$request;
121 
127  protected ‪$response;
128 
132  protected ‪$signalSlotDispatcher;
133 
137  protected ‪$objectManager;
138 
142  protected ‪$uriBuilder;
143 
149  protected ‪$settings;
150 
154  protected ‪$validatorResolver;
155 
159  protected ‪$arguments;
160 
168  protected ‪$supportedRequestTypes = [Request::class];
169 
174 
178  protected ‪$configurationManager;
179 
184  {
185  $this->configurationManager = ‪$configurationManager;
186  $this->settings = $this->configurationManager->‪getConfiguration(‪ConfigurationManagerInterface::CONFIGURATION_TYPE_SETTINGS);
187  }
188 
195  {
196  $this->objectManager = ‪$objectManager;
197  $this->arguments = $this->objectManager->‪get(Arguments::class);
198  }
199 
204  {
205  $this->signalSlotDispatcher = ‪$signalSlotDispatcher;
206  }
207 
212  {
213  $this->validatorResolver = ‪$validatorResolver;
214  }
215 
221  {
222  $this->viewResolver = ‪$viewResolver;
223  }
224 
229  {
230  $this->reflectionService = ‪$reflectionService;
231  }
232 
237  {
238  $this->cacheService = ‪$cacheService;
239  }
240 
245  {
246  $this->hashService = ‪$hashService;
247  }
248 
252  public function ‪injectMvcPropertyMappingConfigurationService(MvcPropertyMappingConfigurationService ‪$mvcPropertyMappingConfigurationService)
253  {
254  $this->mvcPropertyMappingConfigurationService = ‪$mvcPropertyMappingConfigurationService;
255  }
256 
257  public function ‪injectEventDispatcher(EventDispatcherInterface ‪$eventDispatcher): void
258  {
259  $this->eventDispatcher = ‪$eventDispatcher;
260  }
261 
270  protected function ‪initializeView(‪ViewInterface ‪$view)
271  {
272  }
273 
280  protected function ‪initializeAction()
281  {
282  }
283 
293  protected function ‪initializeActionMethodArguments()
294  {
295  $methodParameters = $this->reflectionService
296  ->getClassSchema(static::class)
297  ->getMethod($this->actionMethodName)->getParameters();
298 
299  foreach ($methodParameters as $parameterName => $parameter) {
300  $dataType = null;
301  if ($parameter->getType() !== null) {
302  $dataType = $parameter->getType();
303  } elseif ($parameter->isArray()) {
304  $dataType = 'array';
305  }
306  if ($dataType === null) {
307  throw new InvalidArgumentTypeException('The argument type for parameter $' . $parameterName . ' of method ' . static::class . '->' . $this->actionMethodName . '() could not be detected.', 1253175643);
308  }
309  $defaultValue = $parameter->hasDefaultValue() ? $parameter->getDefaultValue() : null;
310  $this->arguments->addNewArgument($parameterName, $dataType, !$parameter->isOptional(), $defaultValue);
311  }
312  }
313 
322  protected function ‪initializeActionMethodValidators()
323  {
324  if ($this->arguments->count() === 0) {
325  return;
326  }
327 
328  $classSchemaMethod = $this->reflectionService->getClassSchema(static::class)
329  ->getMethod($this->actionMethodName);
330 
332  foreach ($this->arguments as $argument) {
333  $classSchemaMethodParameter = $classSchemaMethod->getParameter($argument->getName());
334  /*
335  * At this point validation is skipped if there is an IgnoreValidation annotation.
336  *
337  * todo: IgnoreValidation annotations could be evaluated in the ClassSchema and result in
338  * todo: no validators being applied to the method parameter.
339  */
340  if ($classSchemaMethodParameter->ignoreValidation()) {
341  continue;
342  }
343 
344  // todo: It's quite odd that an instance of ConjunctionValidator is created directly here.
345  // todo: \TYPO3\CMS\Extbase\Validation\ValidatorResolver::getBaseValidatorConjunction could/should be used
346  // todo: here, to benefit of the built in 1st level cache of the ValidatorResolver.
347  ‪$validator = $this->objectManager->get(ConjunctionValidator::class);
348 
349  foreach ($classSchemaMethodParameter->getValidators() as $validatorDefinition) {
351  $validatorInstance = $this->objectManager->get(
352  $validatorDefinition['className'],
353  $validatorDefinition['options']
354  );
355 
356  ‪$validator->addValidator(
357  $validatorInstance
358  );
359  }
360 
361  $baseValidatorConjunction = $this->validatorResolver->getBaseValidatorConjunction($argument->getDataType());
362  if ($baseValidatorConjunction->count() > 0) {
363  ‪$validator->addValidator($baseValidatorConjunction);
364  }
365  $argument->setValidator(‪$validator);
366  }
367  }
368 
374  {
376  foreach ($this->arguments as $argument) {
377  ‪$validator = $this->validatorResolver->getBaseValidatorConjunction($argument->getDataType());
378  if (‪$validator !== null) {
379  $argument->setValidator(‪$validator);
380  }
381  }
382  }
383 
392  public function ‪processRequest(RequestInterface ‪$request, ResponseInterface ‪$response)
393  {
394  if (!$this->‪canProcessRequest($request)) {
395  throw new UnsupportedRequestTypeException(static::class . ' does not support requests of type "' . get_class(‪$request) . '". Supported types are: ' . implode(' ', $this->supportedRequestTypes), 1187701131);
396  }
397 
398  $setRequestCallable = [‪$response, 'setRequest'];
399  if (is_callable($setRequestCallable)) {
400  $setRequestCallable(‪$request);
401  }
402  $this->request = ‪$request;
403  $this->request->‪setDispatched(true);
404  $this->response = ‪$response;
405  $this->uriBuilder = $this->objectManager->get(UriBuilder::class);
406  $this->uriBuilder->‪setRequest(‪$request);
407  $this->actionMethodName = $this->‪resolveActionMethodName();
410  $this->mvcPropertyMappingConfigurationService->initializePropertyMappingConfigurationFromRequest(‪$request, $this->arguments);
411  $this->‪initializeAction();
412  $actionInitializationMethodName = 'initialize' . ucfirst($this->actionMethodName);
414  $callable = [$this, $actionInitializationMethodName];
415  if (method_exists($this, $actionInitializationMethodName)) {
416  // todo: replace method_exists with is_callable or even both
417  // method_exists alone does not guarantee that $callable is actually callable
418  call_user_func($callable);
419  }
421  $this->controllerContext = $this->‪buildControllerContext();
422  $this->view = $this->‪resolveView();
423  if ($this->view !== null) {
424  $this->‪initializeView($this->view);
425  }
426  $this->‪callActionMethod();
427  $this->‪renderAssetsForRequest($request);
428  }
429 
445  protected function ‪renderAssetsForRequest(‪$request)
446  {
447  if (!$this->view instanceof TemplateView) {
448  // Only TemplateView (from Fluid engine, so this includes all TYPO3 Views based
449  // on TYPO3's AbstractTemplateView) supports renderSection(). The method is not
450  // declared on ViewInterface - so we must assert a specific class. We silently skip
451  // asset processing if the View doesn't match, so we don't risk breaking custom Views.
452  return;
453  }
454  $pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
455  $variables = ['request' => ‪$request, 'arguments' => ‪$this->arguments];
456  $headerAssets = $this->view->renderSection('HeaderAssets', $variables, true);
457  $footerAssets = $this->view->renderSection('FooterAssets', $variables, true);
458  if (!empty(trim($headerAssets))) {
459  $pageRenderer->addHeaderData($headerAssets);
460  }
461  if (!empty(trim($footerAssets))) {
462  $pageRenderer->addFooterData($footerAssets);
463  }
464  }
465 
472  protected function ‪resolveActionMethodName()
473  {
474  ‪$actionMethodName = $this->request->getControllerActionName() . 'Action';
475  if (!method_exists($this, ‪$actionMethodName)) {
476  throw new NoSuchActionException('An action "' . ‪$actionMethodName . '" does not exist in controller "' . static::class . '".', 1186669086);
477  }
478  return ‪$actionMethodName;
479  }
480 
488  protected function ‪callActionMethod()
489  {
490  $preparedArguments = [];
492  foreach ($this->arguments as $argument) {
493  $preparedArguments[] = $argument->getValue();
494  }
495  $validationResult = $this->arguments->validate();
496  if (!$validationResult->hasErrors()) {
497  $this->eventDispatcher->dispatch(new ‪BeforeActionCallEvent(static::class, $this->actionMethodName, $preparedArguments));
498  $actionResult = $this->{$this->actionMethodName}(...$preparedArguments);
499  } else {
500  $actionResult = $this->{$this->errorMethodName}();
501  }
502 
503  if ($actionResult === null && $this->view instanceof ViewInterface) {
504  $this->response->appendContent($this->view->render());
505  } elseif (is_string($actionResult) && $actionResult !== '') {
506  $this->response->appendContent($actionResult);
507  } elseif (is_object($actionResult) && method_exists($actionResult, '__toString')) {
508  $this->response->appendContent((string)$actionResult);
509  }
510  }
511 
517  protected function ‪emitBeforeCallActionMethodSignal(array $preparedArguments)
518  {
519  trigger_error(
520  __METHOD__ . ' is deprecated and will be removed in version 11.0 - use PSR-14 events instead.',
521  E_USER_DEPRECATED
522  );
523  $this->signalSlotDispatcher->dispatch(__CLASS__, 'beforeCallActionMethod', [static::class, $this->actionMethodName, $preparedArguments]);
524  }
525 
532  protected function ‪resolveView()
533  {
534  if ($this->viewResolver instanceof ‪GenericViewResolver) {
535  /*
536  * This setter is not part of the ViewResolverInterface as it's only necessary to set
537  * the default view class from this point when using the generic view resolver which
538  * must respect the possibly overridden property defaultViewObjectName.
539  */
540  $this->viewResolver->setDefaultViewClass($this->defaultViewObjectName);
541  }
542 
543  ‪$view = $this->viewResolver->resolve(
544  $this->request->getControllerObjectName(),
545  $this->request->getControllerActionName(),
546  $this->request->getFormat()
547  );
548 
549  if (‪$view instanceof ViewInterface) {
551  if (‪$view->‪canRender($this->controllerContext) === false) {
552  ‪$view = null;
553  }
554  }
555  if (!isset(‪$view)) {
556  ‪$view = $this->objectManager->get(NotFoundView::class);
557  ‪$view->‪assign('errorMessage', 'No template was found. View could not be resolved for action "'
558  . $this->request->getControllerActionName() . '" in class "' . $this->request->getControllerObjectName() . '"');
559  }
560  ‪$view->‪setControllerContext($this->controllerContext);
561  if (method_exists(‪$view, 'injectSettings')) {
562  ‪$view->injectSettings($this->settings);
563  }
565  // In TYPO3.Flow, solved through Object Lifecycle methods, we need to call it explicitly
566  ‪$view->‪assign('settings', $this->settings);
567  // same with settings injection.
568  return ‪$view;
569  }
570 
574  protected function ‪setViewConfiguration(ViewInterface ‪$view)
575  {
576  // Template Path Override
577  $extbaseFrameworkConfiguration = $this->configurationManager->getConfiguration(
579  );
580 
581  // set TemplateRootPaths
582  $viewFunctionName = 'setTemplateRootPaths';
583  if (method_exists(‪$view, $viewFunctionName)) {
584  $setting = 'templateRootPaths';
585  $parameter = $this->‪getViewProperty($extbaseFrameworkConfiguration, $setting);
586  // no need to bother if there is nothing to set
587  if ($parameter) {
588  ‪$view->$viewFunctionName($parameter);
589  }
590  }
591 
592  // set LayoutRootPaths
593  $viewFunctionName = 'setLayoutRootPaths';
594  if (method_exists(‪$view, $viewFunctionName)) {
595  $setting = 'layoutRootPaths';
596  $parameter = $this->‪getViewProperty($extbaseFrameworkConfiguration, $setting);
597  // no need to bother if there is nothing to set
598  if ($parameter) {
599  ‪$view->$viewFunctionName($parameter);
600  }
601  }
602 
603  // set PartialRootPaths
604  $viewFunctionName = 'setPartialRootPaths';
605  if (method_exists(‪$view, $viewFunctionName)) {
606  $setting = 'partialRootPaths';
607  $parameter = $this->‪getViewProperty($extbaseFrameworkConfiguration, $setting);
608  // no need to bother if there is nothing to set
609  if ($parameter) {
610  ‪$view->$viewFunctionName($parameter);
611  }
612  }
613  }
614 
625  protected function ‪getViewProperty($extbaseFrameworkConfiguration, $setting)
626  {
627  $values = [];
628  if (
629  !empty($extbaseFrameworkConfiguration['view'][$setting])
630  && is_array($extbaseFrameworkConfiguration['view'][$setting])
631  ) {
632  $values = $extbaseFrameworkConfiguration['view'][$setting];
633  }
634 
635  return $values;
636  }
637 
650  protected function ‪errorAction()
651  {
652  $this->‪clearCacheOnError();
653  $this->‪addErrorFlashMessage();
655 
657  }
658 
663  protected function ‪clearCacheOnError()
664  {
665  $extbaseSettings = $this->configurationManager->getConfiguration(‪ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK);
666  if (isset($extbaseSettings['persistence']['enableAutomaticCacheClearing']) && $extbaseSettings['persistence']['enableAutomaticCacheClearing'] === '1') {
667  if (isset(‪$GLOBALS['TSFE'])) {
668  $pageUid = ‪$GLOBALS['TSFE']->id;
669  $this->cacheService->clearPageCache([$pageUid]);
670  }
671  }
672  }
673 
678  protected function ‪addErrorFlashMessage()
679  {
680  $errorFlashMessage = $this->‪getErrorFlashMessage();
681  if ($errorFlashMessage !== false) {
682  $this->‪addFlashMessage($errorFlashMessage, '', ‪FlashMessage::ERROR);
683  }
684  }
685 
693  protected function ‪getErrorFlashMessage()
694  {
695  return 'An error occurred while trying to call ' . static::class . '->' . $this->actionMethodName . '()';
696  }
697 
705  protected function ‪forwardToReferringRequest()
706  {
707  $referringRequest = null;
708  $referringRequestArguments = $this->request->getInternalArguments()['__referrer'] ?? null;
709  if (is_string($referringRequestArguments['@request'] ?? null)) {
710  $referrerArray = json_decode(
711  $this->hashService->validateAndStripHmac($referringRequestArguments['@request']),
712  true
713  );
714  ‪$arguments = [];
715  if (is_string($referringRequestArguments['arguments'] ?? null)) {
716  ‪$arguments = unserialize(
717  base64_decode($this->hashService->validateAndStripHmac($referringRequestArguments['arguments']))
718  );
719  }
720  $referringRequest = new ReferringRequest();
721  $referringRequest->setArguments(array_replace_recursive(‪$arguments, $referrerArray));
722  }
723 
724  if ($referringRequest !== null) {
725  $originalRequest = clone ‪$this->request;
726  $this->request->‪setOriginalRequest($originalRequest);
727  $this->request->setOriginalRequestMappingResults($this->arguments->validate());
728  $this->‪forward(
729  $referringRequest->getControllerActionName(),
730  $referringRequest->getControllerName(),
731  $referringRequest->getControllerExtensionName(),
732  $referringRequest->getArguments()
733  );
734  }
735  }
736 
744  protected function ‪getFlattenedValidationErrorMessage()
745  {
746  $outputMessage = 'Validation failed while trying to call ' . static::class . '->' . $this->actionMethodName . '().' . PHP_EOL;
747  return $outputMessage;
748  }
749 
753  public function ‪getControllerContext()
754  {
756  }
757 
768  public function ‪addFlashMessage($messageBody, $messageTitle = '', $severity = ‪AbstractMessage::OK, $storeInSession = true)
769  {
770  if (!is_string($messageBody)) {
771  throw new \InvalidArgumentException('The message body must be of type string, "' . gettype($messageBody) . '" given.', 1243258395);
772  }
773  /* @var \TYPO3\CMS\Core\Messaging\FlashMessage $flashMessage */
774  $flashMessage = GeneralUtility::makeInstance(
775  FlashMessage::class,
776  (string)$messageBody,
777  (string)$messageTitle,
778  $severity,
779  $storeInSession
780  );
781  $this->controllerContext->getFlashMessageQueue()->enqueue($flashMessage);
782  }
783 
795  {
796  foreach ($this->supportedRequestTypes as $supportedRequestType) {
797  if (‪$request instanceof $supportedRequestType) {
798  return true;
799  }
800  }
801  return false;
802  }
803 
809  protected function ‪buildControllerContext()
810  {
812  ‪$controllerContext = $this->objectManager->get(ControllerContext::class);
813  ‪$controllerContext->‪setRequest($this->request);
814  ‪$controllerContext->‪setResponse($this->response);
815  if ($this->arguments !== null) {
816  ‪$controllerContext->‪setArguments($this->arguments);
817  }
818  ‪$controllerContext->‪setUriBuilder($this->uriBuilder);
819 
820  return ‪$controllerContext;
821  }
822 
836  public function ‪forward($actionName, $controllerName = null, $extensionName = null, array ‪$arguments = null)
837  {
838  $this->request->setDispatched(false);
839  $this->request->setControllerActionName($actionName);
840 
841  if ($controllerName !== null) {
842  $this->request->setControllerName($controllerName);
843  }
844 
845  if ($extensionName !== null) {
846  $this->request->setControllerExtensionName($extensionName);
847  }
848 
849  if (‪$arguments !== null) {
850  $this->request->setArguments(‪$arguments);
851  }
852  throw new ‪StopActionException('forward', 1476045801);
853  }
854 
873  protected function ‪redirect($actionName, $controllerName = null, $extensionName = null, array ‪$arguments = null, $pageUid = null, $delay = 0, $statusCode = 303)
874  {
875  if ($controllerName === null) {
876  $controllerName = $this->request->getControllerName();
877  }
878  $this->uriBuilder->reset()->setCreateAbsoluteUri(true);
880  $this->uriBuilder->setTargetPageUid((int)$pageUid);
881  }
882  if (GeneralUtility::getIndpEnv('TYPO3_SSL')) {
883  $this->uriBuilder->setAbsoluteUriScheme('https');
884  }
885  $uri = $this->uriBuilder->uriFor($actionName, ‪$arguments, $controllerName, $extensionName);
886  $this->‪redirectToUri($uri, $delay, $statusCode);
887  }
888 
899  protected function ‪redirectToUri($uri, $delay = 0, $statusCode = 303)
900  {
901  $this->objectManager->get(CacheService::class)->clearCachesOfRegisteredPageIds();
902 
903  $uri = $this->‪addBaseUriIfNecessary($uri);
904  $escapedUri = htmlentities($uri, ENT_QUOTES, 'utf-8');
905  $this->response->setContent('<html><head><meta http-equiv="refresh" content="' . (int)$delay . ';url=' . $escapedUri . '"/></head></html>');
906  $this->response->setStatus($statusCode);
907  $this->response->setHeader('Location', (string)$uri);
908 
909  // Avoid caching the plugin when we issue a redirect response
910  // This means that even when an action is configured as cachable
911  // we avoid the plugin to be cached, but keep the page cache untouched
912  $contentObject = $this->configurationManager->getContentObject();
913  if ($contentObject->getUserObjectType() === ‪ContentObjectRenderer::OBJECTTYPE_USER) {
914  $contentObject->convertToUserIntObject();
915  }
916 
917  throw new ‪StopActionException('redirectToUri', 1476045828);
918  }
919 
926  protected function ‪addBaseUriIfNecessary($uri)
927  {
928  return GeneralUtility::locationHeaderUrl((string)$uri);
929  }
930 
941  public function ‪throwStatus($statusCode, $statusMessage = null, $content = null)
942  {
943  $this->response->setStatus($statusCode, $statusMessage);
944  if ($content === null) {
945  $content = $this->response->getStatus();
946  }
947  $this->response->setContent($content);
948  throw new StopActionException('throwStatus', 1476045871);
949  }
950 
957  {
959  foreach ($this->arguments as $argument) {
960  $argumentName = $argument->getName();
961  if ($this->request->hasArgument($argumentName)) {
962  $argument->setValue($this->request->getArgument($argumentName));
963  } elseif ($argument->isRequired()) {
964  throw new RequiredArgumentMissingException('Required argument "' . $argumentName . '" is not set for ' . $this->request->getControllerObjectName() . '->' . $this->request->getControllerActionName() . '.', 1298012500);
965  }
966  }
967  }
968 }
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$signalSlotDispatcher
‪TYPO3 CMS Extbase SignalSlot Dispatcher $signalSlotDispatcher
Definition: ActionController.php:119
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\resolveActionMethodName
‪string resolveActionMethodName()
Definition: ActionController.php:451
‪TYPO3\CMS\Extbase\Validation\Validator\ConjunctionValidator
Definition: ConjunctionValidator.php:24
‪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\ActionController\forward
‪forward($actionName, $controllerName=null, $extensionName=null, array $arguments=null)
Definition: ActionController.php:815
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\getViewProperty
‪array getViewProperty($extbaseFrameworkConfiguration, $setting)
Definition: ActionController.php:604
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectViewResolver
‪injectViewResolver(ViewResolverInterface $viewResolver)
Definition: ActionController.php:199
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$supportedRequestTypes
‪array $supportedRequestTypes
Definition: ActionController.php:149
‪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\View\NotFoundView
Definition: NotFoundView.php:28
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$arguments
‪TYPO3 CMS Extbase Mvc Controller Arguments $arguments
Definition: ActionController.php:141
‪TYPO3\CMS\Extbase\Mvc\Controller\Exception\RequiredArgumentMissingException
Definition: RequiredArgumentMissingException.php:26
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$configurationManager
‪ConfigurationManagerInterface $configurationManager
Definition: ActionController.php:157
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\addBaseUriIfNecessary
‪string addBaseUriIfNecessary($uri)
Definition: ActionController.php:905
‪TYPO3\CMS\Extbase\Mvc\View\ViewInterface\setControllerContext
‪setControllerContext(ControllerContext $controllerContext)
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\canProcessRequest
‪bool canProcessRequest(RequestInterface $request)
Definition: ActionController.php:773
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\resolveView
‪ViewInterface resolveView()
Definition: ActionController.php:511
‪TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder
Definition: UriBuilder.php:39
‪TYPO3\CMS\Extbase\Mvc\ResponseInterface
Definition: ResponseInterface.php:22
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$view
‪ViewInterface $view
Definition: ActionController.php:76
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\addErrorFlashMessage
‪addErrorFlashMessage()
Definition: ActionController.php:657
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\buildControllerContext
‪TYPO3 CMS Extbase Mvc Controller ControllerContext buildControllerContext()
Definition: ActionController.php:788
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\initializeAction
‪initializeAction()
Definition: ActionController.php:259
‪TYPO3\CMS\Extbase\Validation\ValidatorResolver
Definition: ValidatorResolver.php:35
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$viewResolver
‪ViewResolverInterface $viewResolver
Definition: ActionController.php:70
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$defaultViewObjectName
‪string $defaultViewObjectName
Definition: ActionController.php:83
‪TYPO3\CMS\Extbase\Mvc\View\ViewInterface\initializeView
‪initializeView()
‪TYPO3\CMS\Extbase\Mvc\Request\setOriginalRequest
‪setOriginalRequest(\TYPO3\CMS\Extbase\Mvc\Request $originalRequest)
Definition: Request.php:447
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$controllerContext
‪TYPO3 CMS Extbase Mvc Controller ControllerContext $controllerContext
Definition: ActionController.php:153
‪TYPO3\CMS\Extbase\Event\Mvc\BeforeActionCallEvent
Definition: BeforeActionCallEvent.php:25
‪TYPO3\CMS\Extbase\Mvc\Controller\ControllerContext
Definition: ControllerContext.php:28
‪TYPO3\CMS\Extbase\Mvc\Exception\InvalidArgumentTypeException
Definition: InvalidArgumentTypeException.php:26
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$validatorResolver
‪TYPO3 CMS Extbase Validation ValidatorResolver $validatorResolver
Definition: ActionController.php:137
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\mapRequestArgumentsToControllerArguments
‪mapRequestArgumentsToControllerArguments()
Definition: ActionController.php:935
‪TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface
Definition: ConfigurationManagerInterface.php:28
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$eventDispatcher
‪EventDispatcherInterface $eventDispatcher
Definition: ActionController.php:103
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\clearCacheOnError
‪clearCacheOnError()
Definition: ActionController.php:642
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\addFlashMessage
‪addFlashMessage($messageBody, $messageTitle='', $severity=AbstractMessage::OK, $storeInSession=true)
Definition: ActionController.php:747
‪TYPO3\CMS\Extbase\Mvc\Controller
Definition: AbstractController.php:16
‪TYPO3\CMS\Extbase\Security\Cryptography\HashService
Definition: HashService.php:31
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\emitBeforeCallActionMethodSignal
‪emitBeforeCallActionMethodSignal(array $preparedArguments)
Definition: ActionController.php:496
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\errorAction
‪string errorAction()
Definition: ActionController.php:629
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\processRequest
‪processRequest(RequestInterface $request, ResponseInterface $response)
Definition: ActionController.php:371
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\forwardToReferringRequest
‪forwardToReferringRequest()
Definition: ActionController.php:684
‪TYPO3\CMS\Extbase\Object\ObjectManagerInterface
Definition: ObjectManagerInterface.php:26
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\initializeControllerArgumentsBaseValidators
‪initializeControllerArgumentsBaseValidators()
Definition: ActionController.php:352
‪TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface\CONFIGURATION_TYPE_FRAMEWORK
‪const CONFIGURATION_TYPE_FRAMEWORK
Definition: ConfigurationManagerInterface.php:29
‪TYPO3\CMS\Extbase\Reflection\ReflectionService
Definition: ReflectionService.php:31
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\redirect
‪redirect($actionName, $controllerName=null, $extensionName=null, array $arguments=null, $pageUid=null, $delay=0, $statusCode=303)
Definition: ActionController.php:852
‪TYPO3\CMS\Core\Page\PageRenderer
Definition: PageRenderer.php:42
‪TYPO3\CMS\Extbase\Mvc\Controller\ControllerContext\setUriBuilder
‪setUriBuilder(UriBuilder $uriBuilder)
Definition: ControllerContext.php:136
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$response
‪TYPO3 CMS Extbase Mvc Response $response
Definition: ActionController.php:115
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$settings
‪array $settings
Definition: ActionController.php:133
‪TYPO3\CMS\Extbase\Mvc\View\ViewResolverInterface
Definition: ViewResolverInterface.php:27
‪$validator
‪if(isset($args['d'])) $validator
Definition: validateRstFiles.php:218
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$uriBuilder
‪TYPO3 CMS Extbase Mvc Web Routing UriBuilder $uriBuilder
Definition: ActionController.php:127
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectConfigurationManager
‪injectConfigurationManager(ConfigurationManagerInterface $configurationManager)
Definition: ActionController.php:162
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectCacheService
‪injectCacheService(CacheService $cacheService)
Definition: ActionController.php:215
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\callActionMethod
‪callActionMethod()
Definition: ActionController.php:467
‪TYPO3\CMS\Extbase\Mvc\View\ViewInterface\assign
‪TYPO3 CMS Extbase Mvc View ViewInterface assign($key, $value)
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\initializeActionMethodValidators
‪initializeActionMethodValidators()
Definition: ActionController.php:301
‪TYPO3\CMS\Extbase\Mvc\Web\ReferringRequest
Definition: ReferringRequest.php:22
‪TYPO3\CMS\Extbase\Mvc\View\GenericViewResolver
Definition: GenericViewResolver.php:26
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectSignalSlotDispatcher
‪injectSignalSlotDispatcher(Dispatcher $signalSlotDispatcher)
Definition: ActionController.php:182
‪TYPO3\CMS\Extbase\Mvc\View\ViewInterface
Definition: ViewInterface.php:24
‪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\ActionController\$hashService
‪HashService $hashService
Definition: ActionController.php:66
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\initializeActionMethodArguments
‪initializeActionMethodArguments()
Definition: ActionController.php:272
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$reflectionService
‪TYPO3 CMS Extbase Reflection ReflectionService $reflectionService
Definition: ActionController.php:58
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectReflectionService
‪injectReflectionService(ReflectionService $reflectionService)
Definition: ActionController.php:207
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\setViewConfiguration
‪setViewConfiguration(ViewInterface $view)
Definition: ActionController.php:553
‪TYPO3\CMS\Core\Messaging\AbstractMessage\OK
‪const OK
Definition: AbstractMessage.php:29
‪TYPO3\CMS\Extbase\Mvc\Response\setRequest
‪setRequest(Request $request)
Definition: Response.php:343
‪TYPO3\CMS\Extbase\Mvc\RequestInterface
Definition: RequestInterface.php:22
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$errorMethodName
‪string $errorMethodName
Definition: ActionController.php:95
‪TYPO3\CMS\Core\Messaging\FlashMessage
Definition: FlashMessage.php:24
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\initializeView
‪initializeView(ViewInterface $view)
Definition: ActionController.php:249
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:5
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$request
‪TYPO3 CMS Extbase Mvc Request $request
Definition: ActionController.php:109
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\getErrorFlashMessage
‪string getErrorFlashMessage()
Definition: ActionController.php:672
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController
Definition: ActionController.php:55
‪TYPO3\CMS\Extbase\Service\CacheService
Definition: CacheService.php:28
‪TYPO3\CMS\Extbase\Mvc\Request\setDispatched
‪setDispatched($flag)
Definition: Request.php:114
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectEventDispatcher
‪injectEventDispatcher(EventDispatcherInterface $eventDispatcher)
Definition: ActionController.php:236
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\getControllerContext
‪ControllerContext getControllerContext()
Definition: ActionController.php:732
‪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\ActionController\getFlattenedValidationErrorMessage
‪string getFlattenedValidationErrorMessage()
Definition: ActionController.php:723
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$cacheService
‪TYPO3 CMS Extbase Service CacheService $cacheService
Definition: ActionController.php:62
‪TYPO3\CMS\Extbase\Mvc\Controller\MvcPropertyMappingConfigurationService
Definition: MvcPropertyMappingConfigurationService.php:46
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectMvcPropertyMappingConfigurationService
‪injectMvcPropertyMappingConfigurationService(MvcPropertyMappingConfigurationService $mvcPropertyMappingConfigurationService)
Definition: ActionController.php:231
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectObjectManager
‪injectObjectManager(ObjectManagerInterface $objectManager)
Definition: ActionController.php:173
‪TYPO3\CMS\Extbase\Mvc\Controller\ControllerInterface
Definition: ControllerInterface.php:25
‪TYPO3\CMS\Extbase\Mvc\Exception\NoSuchActionException
Definition: NoSuchActionException.php:26
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectValidatorResolver
‪injectValidatorResolver(ValidatorResolver $validatorResolver)
Definition: ActionController.php:190
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:46
‪TYPO3\CMS\Extbase\Validation\Validator\ValidatorInterface
Definition: ValidatorInterface.php:22
‪TYPO3\CMS\Extbase\Mvc\Controller\ControllerContext\setResponse
‪setResponse(Response $response)
Definition: ControllerContext.php:98
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$actionMethodName
‪string $actionMethodName
Definition: ActionController.php:89
‪TYPO3\CMS\Extbase\Object\ObjectManagerInterface\get
‪object &T get(string $className,... $constructorArguments)
‪TYPO3\CMS\Extbase\Mvc\Request
Definition: Request.php:31
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$mvcPropertyMappingConfigurationService
‪TYPO3 CMS Extbase Mvc Controller MvcPropertyMappingConfigurationService $mvcPropertyMappingConfigurationService
Definition: ActionController.php:99
‪TYPO3\CMS\Extbase\Mvc\Controller\ControllerContext\setRequest
‪setRequest(Request $request)
Definition: ControllerContext.php:78
‪TYPO3\CMS\Extbase\Mvc\View\ViewInterface\canRender
‪bool canRender(ControllerContext $controllerContext)
‪TYPO3\CMS\Core\Messaging\AbstractMessage\ERROR
‪const ERROR
Definition: AbstractMessage.php:31
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\throwStatus
‪throwStatus($statusCode, $statusMessage=null, $content=null)
Definition: ActionController.php:920
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\renderAssetsForRequest
‪renderAssetsForRequest($request)
Definition: ActionController.php:424
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\redirectToUri
‪redirectToUri($uri, $delay=0, $statusCode=303)
Definition: ActionController.php:878
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$objectManager
‪TYPO3 CMS Extbase Object ObjectManagerInterface $objectManager
Definition: ActionController.php:123
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectHashService
‪injectHashService(HashService $hashService)
Definition: ActionController.php:223
‪TYPO3\CMS\Extbase\SignalSlot\Dispatcher
Definition: Dispatcher.php:126