‪TYPO3CMS  11.5
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;
19 use Psr\Http\Message\ResponseFactoryInterface;
20 use Psr\Http\Message\ResponseInterface;
21 use Psr\Http\Message\StreamFactoryInterface;
30 use TYPO3\CMS\Core\Page\PageRenderer;
59 use TYPO3Fluid\Fluid\View\AbstractTemplateView;
60 
65 {
69  protected ‪$responseFactory;
70 
74  protected ‪$streamFactory;
75 
80  protected ‪$reflectionService;
81 
86  protected ‪$hashService;
87 
92  private ‪$viewResolver;
93 
100  protected ‪$view;
101 
108  protected ‪$defaultViewObjectName = TemplateView::class;
109 
116  protected ‪$actionMethodName = 'indexAction';
117 
123  protected ‪$errorMethodName = 'errorAction';
124 
129 
133  protected ‪$eventDispatcher;
134 
141  protected ‪$request;
142 
147  protected ‪$signalSlotDispatcher;
148 
154  protected ‪$objectManager;
155 
159  protected ‪$uriBuilder;
160 
166  protected ‪$settings;
167 
172  protected ‪$validatorResolver;
173 
177  protected ‪$arguments;
178 
184  protected ‪$controllerContext;
185 
190  protected ‪$configurationManager;
191 
196  private ‪$propertyMapper;
197 
202 
207 
208  final public function ‪injectResponseFactory(ResponseFactoryInterface ‪$responseFactory)
209  {
210  $this->responseFactory = ‪$responseFactory;
211  }
212 
213  final public function ‪injectStreamFactory(StreamFactoryInterface ‪$streamFactory)
214  {
215  $this->streamFactory = ‪$streamFactory;
216  }
217 
223  {
224  $this->configurationManager = ‪$configurationManager;
225  $this->settings = $this->configurationManager->‪getConfiguration(‪ConfigurationManagerInterface::CONFIGURATION_TYPE_SETTINGS);
226  }
227 
236  {
237  $this->objectManager = ‪$objectManager;
238  // @todo: Move elsewhere
239  $this->arguments = GeneralUtility::makeInstance(Arguments::class);
240  }
241 
248  {
249  $this->signalSlotDispatcher = ‪$signalSlotDispatcher;
250  }
251 
256  public function ‪injectValidatorResolver(ValidatorResolver ‪$validatorResolver)
257  {
258  $this->validatorResolver = ‪$validatorResolver;
259  }
260 
265  public function ‪injectViewResolver(ViewResolverInterface ‪$viewResolver)
266  {
267  $this->viewResolver = ‪$viewResolver;
268  }
269 
274  public function ‪injectReflectionService(ReflectionService ‪$reflectionService)
275  {
276  $this->reflectionService = ‪$reflectionService;
277  }
278 
284  {
285  $this->hashService = ‪$hashService;
286  }
287 
292  {
293  $this->mvcPropertyMappingConfigurationService = ‪$mvcPropertyMappingConfigurationService;
294  }
295 
296  public function ‪injectEventDispatcher(EventDispatcherInterface ‪$eventDispatcher): void
297  {
298  $this->eventDispatcher = ‪$eventDispatcher;
299  }
300 
306  {
307  $this->propertyMapper = ‪$propertyMapper;
308  }
309 
313  final public function ‪injectInternalFlashMessageService(‪FlashMessageService $flashMessageService): void
314  {
315  $this->internalFlashMessageService = $flashMessageService;
316  }
317 
321  final public function ‪injectInternalExtensionService(‪ExtensionService $extensionService): void
322  {
323  $this->internalExtensionService = $extensionService;
324  }
325 
336 
343  protected function ‪initializeAction() {}
344 
356  protected function ‪initializeActionMethodArguments()
357  {
358  $methodParameters = $this->reflectionService
359  ->getClassSchema(static::class)
360  ->getMethod($this->actionMethodName)->getParameters();
361 
362  foreach ($methodParameters as $parameterName => $parameter) {
363  $dataType = null;
364  if ($parameter->getType() !== null) {
365  $dataType = $parameter->getType();
366  } elseif ($parameter->isArray()) {
367  $dataType = 'array';
368  }
369  if ($dataType === null) {
370  throw new InvalidArgumentTypeException('The argument type for parameter $' . $parameterName . ' of method ' . static::class . '->' . $this->actionMethodName . '() could not be detected.', 1253175643);
371  }
372  $defaultValue = $parameter->hasDefaultValue() ? $parameter->getDefaultValue() : null;
373  $this->arguments->addNewArgument($parameterName, $dataType, !$parameter->isOptional(), $defaultValue);
374  }
375  }
376 
387  protected function ‪initializeActionMethodValidators()
388  {
389  if ($this->arguments->count() === 0) {
390  return;
391  }
392 
393  $classSchemaMethod = $this->reflectionService->getClassSchema(static::class)
394  ->getMethod($this->actionMethodName);
395 
397  foreach ($this->arguments as $argument) {
398  $classSchemaMethodParameter = $classSchemaMethod->getParameter($argument->getName());
399  // At this point validation is skipped if there is an IgnoreValidation annotation.
400  // @todo: IgnoreValidation annotations could be evaluated in the ClassSchema and result in
401  // no validators being applied to the method parameter.
402  if ($classSchemaMethodParameter->ignoreValidation()) {
403  continue;
404  }
405 
406  // @todo: It's quite odd that an instance of ConjunctionValidator is created directly here.
407  // \TYPO3\CMS\Extbase\Validation\ValidatorResolver::getBaseValidatorConjunction could/should be used
408  // here, to benefit of the built in 1st level cache of the ValidatorResolver.
409  ‪$validator = GeneralUtility::makeInstance(ConjunctionValidator::class);
410 
411  foreach ($classSchemaMethodParameter->getValidators() as $validatorDefinition) {
412  if (method_exists($validatorDefinition['className'], 'setOptions')) {
414  $validatorInstance = GeneralUtility::makeInstance($validatorDefinition['className']);
415  $validatorInstance->setOptions($validatorDefinition['options']);
416  } else {
417  // @deprecated since v11: v12 ValidatorInterface requires setOptions() to be implemented and skips the above test.
419  $validatorInstance = GeneralUtility::makeInstance(
420  $validatorDefinition['className'],
421  $validatorDefinition['options']
422  );
423  }
424  ‪$validator->addValidator(
425  $validatorInstance
426  );
427  }
428 
429  $baseValidatorConjunction = $this->validatorResolver->getBaseValidatorConjunction($argument->getDataType());
430  if ($baseValidatorConjunction->count() > 0) {
431  ‪$validator->addValidator($baseValidatorConjunction);
432  }
433  $argument->setValidator(‪$validator);
434  }
435  }
436 
444  {
446  foreach ($this->arguments as $argument) {
447  ‪$validator = $this->validatorResolver->getBaseValidatorConjunction($argument->getDataType());
448  if (‪$validator !== null) {
449  $argument->setValidator(‪$validator);
450  }
451  }
452  }
453 
462  public function ‪processRequest(RequestInterface ‪$request): ResponseInterface
463  {
465  $this->request = ‪$request;
466  // @deprecated since v11, will be removed in v12.
467  $this->request->‪setDispatched(true);
468  $this->uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
469  $this->uriBuilder->setRequest(‪$request);
470  $this->actionMethodName = $this->‪resolveActionMethodName();
473  $this->mvcPropertyMappingConfigurationService->initializePropertyMappingConfigurationFromRequest(‪$request, $this->arguments);
474  $this->‪initializeAction();
475  $actionInitializationMethodName = 'initialize' . ucfirst($this->actionMethodName);
477  $callable = [$this, $actionInitializationMethodName];
478  if (is_callable($callable)) {
479  $callable();
480  }
482  // @deprecated since v11, will be removed with v12.
483  $this->controllerContext = $this->‪buildControllerContext();
484  $this->view = $this->‪resolveView();
485  if ($this->view !== null && method_exists($this, 'initializeView')) {
486  $this->‪initializeView($this->view);
487  }
488  $response = $this->‪callActionMethod($request);
489  $this->‪renderAssetsForRequest($request);
490 
491  return $response;
492  }
493 
511  protected function ‪renderAssetsForRequest(‪$request)
512  {
513  if (!$this->view instanceof AbstractTemplateView) {
514  // Only AbstractTemplateView (from Fluid engine, so this includes all TYPO3 Views based
515  // on TYPO3's AbstractTemplateView) supports renderSection(). The method is not
516  // declared on ViewInterface - so we must assert a specific class. We silently skip
517  // asset processing if the View doesn't match, so we don't risk breaking custom Views.
518  return;
519  }
520  $pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
521  $variables = ['request' => ‪$request, 'arguments' => ‪$this->arguments];
522  $headerAssets = $this->view->renderSection('HeaderAssets', $variables, true);
523  $footerAssets = $this->view->renderSection('FooterAssets', $variables, true);
524  if (!empty(trim($headerAssets))) {
525  $pageRenderer->addHeaderData($headerAssets);
526  }
527  if (!empty(trim($footerAssets))) {
528  $pageRenderer->addFooterData($footerAssets);
529  }
530  }
531 
540  protected function ‪resolveActionMethodName()
541  {
542  ‪$actionMethodName = $this->request->getControllerActionName() . 'Action';
543  if (!method_exists($this, ‪$actionMethodName)) {
544  throw new NoSuchActionException('An action "' . ‪$actionMethodName . '" does not exist in controller "' . static::class . '".', 1186669086);
545  }
546  return ‪$actionMethodName;
547  }
548 
558  protected function ‪callActionMethod(RequestInterface ‪$request): ResponseInterface
559  {
560  // incoming request is not needed yet but can be passed into the action in the future like in symfony
561  // todo: support this via method-reflection
562 
563  $preparedArguments = [];
565  foreach ($this->arguments as $argument) {
566  $preparedArguments[] = $argument->getValue();
567  }
568  $validationResult = $this->arguments->validate();
569  if (!$validationResult->hasErrors()) {
570  $this->eventDispatcher->dispatch(new BeforeActionCallEvent(static::class, $this->actionMethodName, $preparedArguments));
571  $actionResult = $this->{$this->actionMethodName}(...$preparedArguments);
572  } else {
573  $actionResult = $this->{$this->errorMethodName}();
574  }
575 
576  if ($actionResult instanceof ResponseInterface) {
577  return $actionResult;
578  }
579 
580  trigger_error(
581  sprintf(
582  'Controller action %s does not return an instance of %s which is deprecated.',
583  static::class . '::' . $this->actionMethodName,
584  ResponseInterface::class
585  ),
586  E_USER_DEPRECATED
587  );
588 
589  $response = new Response();
590  $body = new Stream('php://temp', 'rw');
591  if ($actionResult === null && $this->view instanceof ViewInterface) {
592  if ($this->view instanceof JsonView) {
593  // This is just a fallback solution until v12, when Extbase requires PSR-7 responses to be
594  // returned in their controller actions. The header, added below, may gets overwritten in
595  // the Extbase bootstrap, depending on the context (FE/BE) and TypoScript configuration.
596  $response = $response->withHeader('Content-Type', 'application/json; charset=utf-8');
597  }
598  $body->write($this->view->render());
599  } elseif (is_string($actionResult) && $actionResult !== '') {
600  $body->write($actionResult);
601  } elseif (is_object($actionResult) && method_exists($actionResult, '__toString')) {
602  $body->write((string)$actionResult);
603  }
604 
605  $body->rewind();
606  return $response->withBody($body);
607  }
608 
618  protected function ‪resolveView()
619  {
620  if ($this->viewResolver instanceof GenericViewResolver) {
621  /*
622  * This setter is not part of the ViewResolverInterface as it's only necessary to set
623  * the default view class from this point when using the generic view resolver which
624  * must respect the possibly overridden property defaultViewObjectName.
625  */
626  $this->viewResolver->setDefaultViewClass($this->defaultViewObjectName);
627  }
628 
629  ‪$view = $this->viewResolver->resolve(
630  $this->request->getControllerObjectName(),
631  $this->request->getControllerActionName(),
632  $this->request->getFormat()
633  );
634 
636  // @deprecated since v11, will be removed with v12.
637  ‪$view->‪setControllerContext($this->controllerContext);
638  if (method_exists(‪$view, 'injectSettings')) {
639  ‪$view->injectSettings($this->settings);
640  }
641  if (method_exists(‪$view, 'initializeView')) {
642  // @deprecated since v11, will be removed with v12. Drop together with removal of extbase ViewInterface.
644  }
645  // In TYPO3.Flow, solved through Object Lifecycle methods, we need to call it explicitly
646  ‪$view->‪assign('settings', $this->settings);
647  // same with settings injection.
648  return ‪$view;
649  }
650 
657  protected function ‪setViewConfiguration(ViewInterface ‪$view)
658  {
659  // Template Path Override
660  $extbaseFrameworkConfiguration = $this->configurationManager->getConfiguration(
662  );
663 
664  if (method_exists(‪$view, 'setTemplateRootPaths')) {
665  $setting = 'templateRootPaths';
666  $parameter = $this->‪getViewProperty($extbaseFrameworkConfiguration, $setting);
667  // no need to bother if there is nothing to set
668  if ($parameter) {
669  ‪$view->setTemplateRootPaths($parameter);
670  }
671  }
672 
673  if (method_exists(‪$view, 'setLayoutRootPaths')) {
674  $setting = 'layoutRootPaths';
675  $parameter = $this->‪getViewProperty($extbaseFrameworkConfiguration, $setting);
676  // no need to bother if there is nothing to set
677  if ($parameter) {
678  ‪$view->setLayoutRootPaths($parameter);
679  }
680  }
681 
682  if (method_exists(‪$view, 'setPartialRootPaths')) {
683  $setting = 'partialRootPaths';
684  $parameter = $this->‪getViewProperty($extbaseFrameworkConfiguration, $setting);
685  // no need to bother if there is nothing to set
686  if ($parameter) {
687  ‪$view->setPartialRootPaths($parameter);
688  }
689  }
690  }
691 
704  protected function ‪getViewProperty($extbaseFrameworkConfiguration, $setting)
705  {
706  $values = [];
707  if (
708  !empty($extbaseFrameworkConfiguration['view'][$setting])
709  && is_array($extbaseFrameworkConfiguration['view'][$setting])
710  ) {
711  $values = $extbaseFrameworkConfiguration['view'][$setting];
712  }
713 
714  return $values;
715  }
716 
729  protected function ‪errorAction()
730  {
731  $this->‪addErrorFlashMessage();
732  if (($response = $this->‪forwardToReferringRequest()) !== null) {
733  return $response->withStatus(400);
734  }
735 
736  $response = $this->‪htmlResponse($this->‪getFlattenedValidationErrorMessage());
737  return $response->withStatus(400);
738  }
739 
746  protected function ‪addErrorFlashMessage()
747  {
748  $errorFlashMessage = $this->‪getErrorFlashMessage();
749  if ($errorFlashMessage !== false) {
750  $this->‪addFlashMessage($errorFlashMessage, '', ‪FlashMessage::ERROR);
751  }
752  }
753 
763  protected function ‪getErrorFlashMessage()
764  {
765  return 'An error occurred while trying to call ' . static::class . '->' . $this->actionMethodName . '()';
766  }
767 
777  protected function ‪forwardToReferringRequest(): ?ResponseInterface
778  {
779  $referringRequestArguments = $this->request->getInternalArguments()['__referrer'] ?? null;
780  if (is_string($referringRequestArguments['@request'] ?? null)) {
781  $referrerArray = json_decode(
782  $this->hashService->validateAndStripHmac($referringRequestArguments['@request']),
783  true
784  );
785  ‪$arguments = [];
786  if (is_string($referringRequestArguments['arguments'] ?? null)) {
787  ‪$arguments = unserialize(
788  base64_decode($this->hashService->validateAndStripHmac($referringRequestArguments['arguments']))
789  );
790  }
791  $replacedArguments = array_replace_recursive(‪$arguments, $referrerArray);
792  $nonExtbaseBaseArguments = [];
793  foreach ($replacedArguments as $argumentName => $argumentValue) {
794  if (!is_string($argumentName) || $argumentName === '') {
795  throw new InvalidArgumentNameException('Invalid argument name.', 1623940985);
796  }
797  if (str_starts_with($argumentName, '__')
798  || in_array($argumentName, ['@extension', '@subpackage', '@controller', '@action', '@format'], true)
799  ) {
800  // Don't handle internalArguments here, not needed for forwardResponse()
801  continue;
802  }
803  $nonExtbaseBaseArguments[$argumentName] = $argumentValue;
804  }
805  return (new ‪ForwardResponse((string)($replacedArguments['@action'] ?? 'index')))
806  ->withControllerName((string)($replacedArguments['@controller'] ?? 'Standard'))
807  ->withExtensionName((string)($replacedArguments['@extension'] ?? ''))
808  ->withArguments($nonExtbaseBaseArguments)
809  ->withArgumentsValidationResult($this->arguments->validate());
810  }
811 
812  return null;
813  }
814 
824  protected function ‪getFlattenedValidationErrorMessage()
825  {
826  $outputMessage = 'Validation failed while trying to call ' . static::class . '->' . $this->actionMethodName . '().' . PHP_EOL;
827  return $outputMessage;
828  }
829 
834  public function ‪getControllerContext()
835  {
837  }
838 
849  public function ‪addFlashMessage($messageBody, $messageTitle = '', $severity = ‪AbstractMessage::OK, $storeInSession = true)
850  {
851  if (!is_string($messageBody)) {
852  throw new \InvalidArgumentException('The message body must be of type string, "' . gettype($messageBody) . '" given.', 1243258395);
853  }
854  /* @var \TYPO3\CMS\Core\Messaging\FlashMessage $flashMessage */
855  $flashMessage = GeneralUtility::makeInstance(
856  FlashMessage::class,
857  (string)$messageBody,
858  (string)$messageTitle,
859  $severity,
860  $storeInSession
861  );
862 
863  $this->‪getFlashMessageQueue()->enqueue($flashMessage);
864  }
865 
873  protected function ‪getFlashMessageQueue(?string $identifier = null): ‪FlashMessageQueue
874  {
875  if ($identifier === null) {
876  $pluginNamespace = $this->internalExtensionService->getPluginNamespace(
877  $this->request->getControllerExtensionName(),
878  $this->request->getPluginName()
879  );
880  $identifier = 'extbase.flashmessages.' . $pluginNamespace;
881  }
882 
883  return $this->internalFlashMessageService->getMessageQueueByIdentifier($identifier);
884  }
885 
894  protected function ‪buildControllerContext()
895  {
896  ‪$controllerContext = GeneralUtility::makeInstance(ControllerContext::class);
897  ‪$controllerContext->‪setRequest($this->request);
898  if ($this->arguments !== null) {
899  ‪$controllerContext->‪setArguments($this->arguments);
900  }
901  ‪$controllerContext->‪setUriBuilder($this->uriBuilder);
902 
903  return ‪$controllerContext;
904  }
905 
921  public function ‪forward($actionName, $controllerName = null, $extensionName = null, ?array ‪$arguments = null)
922  {
923  trigger_error(
924  sprintf('Method %s is deprecated. To forward to another action, return a %s instead.', __METHOD__, ForwardResponse::class),
925  E_USER_DEPRECATED
926  );
927 
928  $this->request->setDispatched(false);
929  $this->request->setControllerActionName($actionName);
930 
931  if ($controllerName !== null) {
932  $this->request->setControllerName($controllerName);
933  }
934 
935  if ($extensionName !== null) {
936  $this->request->setControllerExtensionName($extensionName);
937  }
938 
939  if (‪$arguments !== null) {
940  $this->request->setArguments(‪$arguments);
941  }
942  throw new ‪StopActionException('forward', 1476045801);
943  }
944 
961  protected function ‪redirect($actionName, $controllerName = null, $extensionName = null, ?array ‪$arguments = null, $pageUid = null, $_ = null, $statusCode = 303): void
962  {
963  if ($controllerName === null) {
964  $controllerName = $this->request->getControllerName();
965  }
966  $this->uriBuilder->reset()->setCreateAbsoluteUri(true);
968  $this->uriBuilder->setTargetPageUid((int)$pageUid);
969  }
970  if (GeneralUtility::getIndpEnv('TYPO3_SSL')) {
971  $this->uriBuilder->setAbsoluteUriScheme('https');
972  }
973  $uri = $this->uriBuilder->uriFor($actionName, ‪$arguments, $controllerName, $extensionName);
974  $this->‪redirectToUri($uri, null, $statusCode);
975  }
976 
987  protected function ‪redirectToUri($uri, $_ = null, $statusCode = 303): void
988  {
989  $uri = $this->‪addBaseUriIfNecessary($uri);
990  $response = new RedirectResponse($uri, $statusCode);
991  // @deprecated since v11, will be removed in v12. RETURN the response instead. See Dispatcher class, too.
992  throw new StopActionException('redirectToUri', 1476045828, null, $response);
993  }
994 
1003  protected function ‪addBaseUriIfNecessary($uri)
1004  {
1005  return GeneralUtility::locationHeaderUrl((string)$uri);
1006  }
1007 
1018  public function ‪throwStatus($statusCode, $statusMessage = null, $content = null)
1019  {
1020  if ($content === null) {
1021  $content = $statusCode . ' ' . $statusMessage;
1022  }
1023  $response = $this->responseFactory
1024  ->createResponse((int)$statusCode, (string)$statusMessage)
1025  ->withBody($this->streamFactory->createStream((string)$content));
1026  throw new PropagateResponseException($response, 1476045871);
1027  }
1028 
1036  protected function ‪mapRequestArgumentsToControllerArguments()
1037  {
1039  foreach ($this->arguments as $argument) {
1040  $argumentName = $argument->getName();
1041  if ($this->request->hasArgument($argumentName)) {
1042  $this->‪setArgumentValue($argument, $this->request->getArgument($argumentName));
1043  } elseif ($argument->isRequired()) {
1044  throw new RequiredArgumentMissingException('Required argument "' . $argumentName . '" is not set for ' . $this->request->getControllerObjectName() . '->' . $this->request->getControllerActionName() . '.', 1298012500);
1045  }
1046  }
1047  }
1048 
1053  private function ‪setArgumentValue(Argument $argument, $rawValue): void
1054  {
1055  if ($rawValue === null) {
1056  $argument->setValue(null);
1057  return;
1058  }
1059  $dataType = $argument->getDataType();
1060  if (is_object($rawValue) && $rawValue instanceof $dataType) {
1061  $argument->setValue($rawValue);
1062  return;
1063  }
1064  $this->propertyMapper->resetMessages();
1065  try {
1066  $argument->setValue(
1067  $this->propertyMapper->convert(
1068  $rawValue,
1069  $dataType,
1070  $argument->getPropertyMappingConfiguration()
1071  )
1072  );
1073  } catch (‪TargetNotFoundException $e) {
1074  // for optional arguments no exception is thrown.
1075  if ($argument->isRequired()) {
1076  throw $e;
1077  }
1078  }
1079  $argument->getValidationResults()->merge($this->propertyMapper->getMessages());
1080  }
1088  protected function ‪htmlResponse(?string $html = null): ResponseInterface
1089  {
1090  return $this->responseFactory->createResponse()
1091  ->withHeader('Content-Type', 'text/html; charset=utf-8')
1092  ->withBody($this->streamFactory->createStream((string)($html ?? $this->view->render())));
1093  }
1094 
1102  protected function ‪jsonResponse(?string $json = null): ResponseInterface
1103  {
1104  return $this->responseFactory->createResponse()
1105  ->withHeader('Content-Type', 'application/json; charset=utf-8')
1106  ->withBody($this->streamFactory->createStream((string)($json ?? $this->view->render())));
1107  }
1108 }
‪TYPO3\CMS\Extbase\Mvc\Controller\Argument\setValue
‪TYPO3 CMS Extbase Mvc Controller Argument setValue($rawValue)
Definition: Argument.php:225
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$signalSlotDispatcher
‪TYPO3 CMS Extbase SignalSlot Dispatcher $signalSlotDispatcher
Definition: ActionController.php:134
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\resolveActionMethodName
‪string resolveActionMethodName()
Definition: ActionController.php:519
‪TYPO3\CMS\Extbase\Validation\Validator\ConjunctionValidator
Definition: ConjunctionValidator.php:24
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\redirectToUri
‪never redirectToUri($uri, $_=null, $statusCode=303)
Definition: ActionController.php:966
‪TYPO3\CMS\Extbase\Mvc\Exception\StopActionException
Definition: StopActionException.php:37
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\getViewProperty
‪array getViewProperty($extbaseFrameworkConfiguration, $setting)
Definition: ActionController.php:683
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectViewResolver
‪injectViewResolver(ViewResolverInterface $viewResolver)
Definition: ActionController.php:244
‪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\Controller\ActionController\$arguments
‪TYPO3 CMS Extbase Mvc Controller Arguments $arguments
Definition: ActionController.php:159
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\buildControllerContext
‪ControllerContext buildControllerContext()
Definition: ActionController.php:873
‪TYPO3\CMS\Extbase\Mvc\Controller\Exception\RequiredArgumentMissingException
Definition: RequiredArgumentMissingException.php:25
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$configurationManager
‪ConfigurationManagerInterface $configurationManager
Definition: ActionController.php:170
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\addBaseUriIfNecessary
‪string addBaseUriIfNecessary($uri)
Definition: ActionController.php:982
‪TYPO3\CMS\Extbase\Mvc\View\ViewInterface\setControllerContext
‪setControllerContext(ControllerContext $controllerContext)
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\resolveView
‪ViewInterface resolveView()
Definition: ActionController.php:597
‪TYPO3\CMS\Extbase\Mvc\View\ViewInterface\assign
‪self assign($key, $value)
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\getErrorFlashMessage
‪string bool getErrorFlashMessage()
Definition: ActionController.php:742
‪TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder
Definition: UriBuilder.php:41
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$view
‪ViewInterface $view
Definition: ActionController.php:94
‪TYPO3\CMS\Extbase\Mvc\Controller\Argument\getValidationResults
‪Result getValidationResults()
Definition: Argument.php:294
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\addErrorFlashMessage
‪addErrorFlashMessage()
Definition: ActionController.php:725
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\initializeAction
‪initializeAction()
Definition: ActionController.php:322
‪TYPO3\CMS\Extbase\Validation\ValidatorResolver
Definition: ValidatorResolver.php:34
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$request
‪Request $request
Definition: ActionController.php:129
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$viewResolver
‪ViewResolverInterface $viewResolver
Definition: ActionController.php:87
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectPropertyMapper
‪injectPropertyMapper(PropertyMapper $propertyMapper)
Definition: ActionController.php:284
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$defaultViewObjectName
‪string $defaultViewObjectName
Definition: ActionController.php:101
‪TYPO3\CMS\Extbase\Mvc\View\ViewInterface\initializeView
‪initializeView()
‪TYPO3\CMS\Extbase\Event\Mvc\BeforeActionCallEvent
Definition: BeforeActionCallEvent.php:25
‪TYPO3\CMS\Extbase\Mvc\Controller\ControllerContext
Definition: ControllerContext.php:30
‪TYPO3\CMS\Extbase\Mvc\Exception\InvalidArgumentTypeException
Definition: InvalidArgumentTypeException.php:25
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$validatorResolver
‪TYPO3 CMS Extbase Validation ValidatorResolver $validatorResolver
Definition: ActionController.php:155
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\mapRequestArgumentsToControllerArguments
‪mapRequestArgumentsToControllerArguments()
Definition: ActionController.php:1015
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$responseFactory
‪ResponseFactoryInterface $responseFactory
Definition: ActionController.php:68
‪TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface
Definition: ConfigurationManagerInterface.php:28
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$eventDispatcher
‪EventDispatcherInterface $eventDispatcher
Definition: ActionController.php:122
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectStreamFactory
‪injectStreamFactory(StreamFactoryInterface $streamFactory)
Definition: ActionController.php:192
‪TYPO3\CMS\Extbase\Http\ForwardResponse
Definition: ForwardResponse.php:24
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\addFlashMessage
‪addFlashMessage($messageBody, $messageTitle='', $severity=AbstractMessage::OK, $storeInSession=true)
Definition: ActionController.php:828
‪TYPO3\CMS\Extbase\Mvc\Controller
Definition: ActionController.php:16
‪TYPO3\CMS\Extbase\Security\Cryptography\HashService
Definition: HashService.php:31
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectInternalFlashMessageService
‪injectInternalFlashMessageService(FlashMessageService $flashMessageService)
Definition: ActionController.php:292
‪TYPO3\CMS\Extbase\Error\Result\merge
‪merge(Result $otherResult)
Definition: Result.php:445
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\htmlResponse
‪ResponseInterface htmlResponse(?string $html=null)
Definition: ActionController.php:1067
‪TYPO3\CMS\Fluid\View\TemplateView
Definition: TemplateView.php:22
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\getFlashMessageQueue
‪getFlashMessageQueue(?string $identifier=null)
Definition: ActionController.php:852
‪TYPO3\CMS\Extbase\Object\ObjectManagerInterface
Definition: ObjectManagerInterface.php:29
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\initializeControllerArgumentsBaseValidators
‪initializeControllerArgumentsBaseValidators()
Definition: ActionController.php:422
‪TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface\CONFIGURATION_TYPE_FRAMEWORK
‪const CONFIGURATION_TYPE_FRAMEWORK
Definition: ConfigurationManagerInterface.php:29
‪TYPO3\CMS\Extbase\Reflection\ReflectionService
Definition: ReflectionService.php:28
‪TYPO3\CMS\Extbase\Mvc\Controller\Argument\getPropertyMappingConfiguration
‪TYPO3 CMS Extbase Mvc Controller MvcPropertyMappingConfiguration getPropertyMappingConfiguration()
Definition: Argument.php:249
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\callActionMethod
‪callActionMethod(RequestInterface $request)
Definition: ActionController.php:537
‪TYPO3\CMS\Extbase\Mvc\Controller\ControllerContext\setUriBuilder
‪setUriBuilder(UriBuilder $uriBuilder)
Definition: ControllerContext.php:114
‪TYPO3\CMS\Extbase\Mvc\Controller\Argument\isRequired
‪bool isRequired()
Definition: Argument.php:169
‪TYPO3\CMS\Core\Http\Response
Definition: Response.php:30
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$settings
‪array $settings
Definition: ActionController.php:150
‪TYPO3\CMS\Extbase\Mvc\View\ViewResolverInterface
Definition: ViewResolverInterface.php:27
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\processRequest
‪ResponseInterface processRequest(RequestInterface $request)
Definition: ActionController.php:441
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\forward
‪never forward($actionName, $controllerName=null, $extensionName=null, ?array $arguments=null)
Definition: ActionController.php:900
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectInternalExtensionService
‪injectInternalExtensionService(ExtensionService $extensionService)
Definition: ActionController.php:300
‪$validator
‪if(isset($args['d'])) $validator
Definition: validateRstFiles.php:219
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$uriBuilder
‪TYPO3 CMS Extbase Mvc Web Routing UriBuilder $uriBuilder
Definition: ActionController.php:144
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectConfigurationManager
‪injectConfigurationManager(ConfigurationManagerInterface $configurationManager)
Definition: ActionController.php:201
‪TYPO3\CMS\Core\Http\Stream
Definition: Stream.php:29
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\initializeActionMethodValidators
‪initializeActionMethodValidators()
Definition: ActionController.php:366
‪TYPO3\CMS\Extbase\Mvc\View\GenericViewResolver
Definition: GenericViewResolver.php:28
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectSignalSlotDispatcher
‪injectSignalSlotDispatcher(Dispatcher $signalSlotDispatcher)
Definition: ActionController.php:226
‪TYPO3\CMS\Extbase\Mvc\View\ViewInterface
Definition: ViewInterface.php:26
‪TYPO3\CMS\Extbase\Property\PropertyMapper
Definition: PropertyMapper.php:39
‪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:82
‪TYPO3\CMS\Core\Http\PropagateResponseException
Definition: PropagateResponseException.php:47
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\initializeActionMethodArguments
‪initializeActionMethodArguments()
Definition: ActionController.php:335
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$reflectionService
‪TYPO3 CMS Extbase Reflection ReflectionService $reflectionService
Definition: ActionController.php:77
‪TYPO3\CMS\Core\Http\RedirectResponse
Definition: RedirectResponse.php:28
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectReflectionService
‪injectReflectionService(ReflectionService $reflectionService)
Definition: ActionController.php:253
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\setViewConfiguration
‪setViewConfiguration(ViewInterface $view)
Definition: ActionController.php:636
‪TYPO3\CMS\Core\Messaging\AbstractMessage\OK
‪const OK
Definition: AbstractMessage.php:29
‪TYPO3\CMS\Extbase\Mvc\Exception\InvalidArgumentNameException
Definition: InvalidArgumentNameException.php:25
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\redirect
‪never redirect($actionName, $controllerName=null, $extensionName=null, ?array $arguments=null, $pageUid=null, $_=null, $statusCode=303)
Definition: ActionController.php:940
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\errorAction
‪ResponseInterface errorAction()
Definition: ActionController.php:708
‪TYPO3\CMS\Extbase\Mvc\RequestInterface
Definition: RequestInterface.php:27
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$errorMethodName
‪string $errorMethodName
Definition: ActionController.php:114
‪TYPO3\CMS\Core\Messaging\FlashMessage
Definition: FlashMessage.php:26
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\initializeView
‪initializeView(ViewInterface $view)
Definition: ActionController.php:314
‪TYPO3\CMS\Extbase\Service\ExtensionService
Definition: ExtensionService.php:34
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$controllerContext
‪ControllerContext $controllerContext
Definition: ActionController.php:165
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController
Definition: ActionController.php:65
‪TYPO3\CMS\Extbase\Mvc\Request\setDispatched
‪setDispatched($flag)
Definition: Request.php:429
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectEventDispatcher
‪injectEventDispatcher(EventDispatcherInterface $eventDispatcher)
Definition: ActionController.php:275
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\getControllerContext
‪ControllerContext getControllerContext()
Definition: ActionController.php:813
‪TYPO3\CMS\Core\Utility\MathUtility
Definition: MathUtility.php:22
‪TYPO3\CMS\Extbase\Mvc\Controller\ControllerContext\setArguments
‪setArguments(Arguments $arguments)
Definition: ControllerContext.php:96
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectResponseFactory
‪injectResponseFactory(ResponseFactoryInterface $responseFactory)
Definition: ActionController.php:187
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\throwStatus
‪never throwStatus($statusCode, $statusMessage=null, $content=null)
Definition: ActionController.php:997
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\getFlattenedValidationErrorMessage
‪string getFlattenedValidationErrorMessage()
Definition: ActionController.php:803
‪TYPO3\CMS\Extbase\Mvc\Controller\MvcPropertyMappingConfigurationService
Definition: MvcPropertyMappingConfigurationService.php:46
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectMvcPropertyMappingConfigurationService
‪injectMvcPropertyMappingConfigurationService(MvcPropertyMappingConfigurationService $mvcPropertyMappingConfigurationService)
Definition: ActionController.php:270
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectObjectManager
‪injectObjectManager(ObjectManagerInterface $objectManager)
Definition: ActionController.php:214
‪TYPO3\CMS\Extbase\Mvc\Controller\ControllerInterface
Definition: ControllerInterface.php:25
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$internalExtensionService
‪ExtensionService $internalExtensionService
Definition: ActionController.php:185
‪TYPO3\CMS\Extbase\Mvc\Exception\NoSuchActionException
Definition: NoSuchActionException.php:25
‪TYPO3\CMS\Extbase\Mvc\Controller\Argument\getDataType
‪string getDataType()
Definition: Argument.php:147
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$objectManager
‪ObjectManagerInterface $objectManager
Definition: ActionController.php:140
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$streamFactory
‪StreamFactoryInterface $streamFactory
Definition: ActionController.php:72
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectValidatorResolver
‪injectValidatorResolver(ValidatorResolver $validatorResolver)
Definition: ActionController.php:235
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:50
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\jsonResponse
‪ResponseInterface jsonResponse(?string $json=null)
Definition: ActionController.php:1081
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$internalFlashMessageService
‪FlashMessageService $internalFlashMessageService
Definition: ActionController.php:180
‪TYPO3\CMS\Extbase\Property\Exception\TargetNotFoundException
Definition: TargetNotFoundException.php:25
‪TYPO3\CMS\Core\Messaging\FlashMessageQueue
Definition: FlashMessageQueue.php:29
‪TYPO3\CMS\Extbase\Validation\Validator\ValidatorInterface
Definition: ValidatorInterface.php:22
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$actionMethodName
‪string $actionMethodName
Definition: ActionController.php:108
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\setArgumentValue
‪setArgumentValue(Argument $argument, $rawValue)
Definition: ActionController.php:1032
‪TYPO3\CMS\Extbase\Mvc\Controller\Argument
Definition: Argument.php:27
‪TYPO3\CMS\Extbase\Mvc\View\JsonView
Definition: JsonView.php:31
‪TYPO3\CMS\Extbase\Mvc\Request
Definition: Request.php:39
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$mvcPropertyMappingConfigurationService
‪TYPO3 CMS Extbase Mvc Controller MvcPropertyMappingConfigurationService $mvcPropertyMappingConfigurationService
Definition: ActionController.php:118
‪TYPO3\CMS\Core\Messaging\FlashMessageService
Definition: FlashMessageService.php:27
‪TYPO3\CMS\Extbase\Mvc\Controller\ControllerContext\setRequest
‪setRequest(Request $request)
Definition: ControllerContext.php:76
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\forwardToReferringRequest
‪ResponseInterface null forwardToReferringRequest()
Definition: ActionController.php:756
‪TYPO3\CMS\Core\Messaging\AbstractMessage\ERROR
‪const ERROR
Definition: AbstractMessage.php:31
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\renderAssetsForRequest
‪renderAssetsForRequest($request)
Definition: ActionController.php:490
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectHashService
‪injectHashService(HashService $hashService)
Definition: ActionController.php:262
‪TYPO3\CMS\Extbase\SignalSlot\Dispatcher
Definition: Dispatcher.php:34
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$propertyMapper
‪PropertyMapper $propertyMapper
Definition: ActionController.php:175