‪TYPO3CMS  ‪main
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;
54 use TYPO3Fluid\Fluid\View\AbstractTemplateView;
55 use TYPO3Fluid\Fluid\View\ViewInterface;
56 
61 {
65  protected ‪$responseFactory;
66 
70  protected ‪$streamFactory;
71 
76  protected ‪$reflectionService;
77 
82  protected ‪$hashService;
83 
88  private ‪$viewResolver;
89 
95  protected ‪$view;
96 
103  protected ‪$defaultViewObjectName = TemplateView::class;
104 
111  protected ‪$actionMethodName = 'indexAction';
112 
118  protected ‪$errorMethodName = 'errorAction';
119 
124 
128  protected ‪$eventDispatcher;
129 
134 
138  protected ‪$uriBuilder;
139 
145  protected ‪$settings;
146 
152 
156  protected ‪$arguments;
157 
162  protected ‪$configurationManager;
163 
169 
174 
179 
180  final public function ‪injectResponseFactory(ResponseFactoryInterface ‪$responseFactory)
181  {
182  $this->responseFactory = ‪$responseFactory;
183  }
184 
185  final public function ‪injectStreamFactory(StreamFactoryInterface ‪$streamFactory)
186  {
187  $this->streamFactory = ‪$streamFactory;
188  }
189 
194  {
195  $this->configurationManager = ‪$configurationManager;
196  $this->settings = $this->configurationManager->‪getConfiguration(‪ConfigurationManagerInterface::CONFIGURATION_TYPE_SETTINGS);
197  $this->arguments = GeneralUtility::makeInstance(Arguments::class);
198  }
199 
204  {
205  $this->validatorResolver = ‪$validatorResolver;
206  }
207 
211  public function ‪injectViewResolver(ViewResolverInterface ‪$viewResolver)
212  {
213  $this->viewResolver = ‪$viewResolver;
214  }
215 
220  {
221  $this->reflectionService = ‪$reflectionService;
222  }
223 
228  {
229  $this->hashService = ‪$hashService;
230  }
231 
233  {
234  $this->mvcPropertyMappingConfigurationService = ‪$mvcPropertyMappingConfigurationService;
235  }
236 
237  public function ‪injectEventDispatcher(EventDispatcherInterface ‪$eventDispatcher): void
238  {
239  $this->eventDispatcher = ‪$eventDispatcher;
240  }
241 
246  {
247  $this->propertyMapper = ‪$propertyMapper;
248  }
249 
253  final public function ‪injectInternalFlashMessageService(FlashMessageService $flashMessageService): void
254  {
255  $this->internalFlashMessageService = $flashMessageService;
256  }
257 
261  final public function ‪injectInternalExtensionService(‪ExtensionService $extensionService): void
262  {
263  $this->internalExtensionService = $extensionService;
264  }
265 
272  protected function ‪initializeAction() {}
273 
285  protected function ‪initializeActionMethodArguments(): void
286  {
287  $methodParameters = $this->reflectionService
288  ->getClassSchema(static::class)
289  ->getMethod($this->actionMethodName)->getParameters();
290 
291  foreach ($methodParameters as $parameterName => $parameter) {
292  $dataType = null;
293  if ($parameter->getType() !== null) {
294  $dataType = $parameter->getType();
295  } elseif ($parameter->isArray()) {
296  $dataType = 'array';
297  }
298  if ($dataType === null) {
299  throw new ‪InvalidArgumentTypeException('The argument type for parameter $' . $parameterName . ' of method ' . static::class . '->' . $this->actionMethodName . '() could not be detected.', 1253175643);
300  }
301  $defaultValue = $parameter->hasDefaultValue() ? $parameter->getDefaultValue() : null;
302  $this->arguments->addNewArgument($parameterName, $dataType, !$parameter->isOptional(), $defaultValue);
303  }
304  }
305 
316  protected function ‪initializeActionMethodValidators(): void
317  {
318  if ($this->arguments->count() === 0) {
319  return;
320  }
321 
322  $classSchemaMethod = $this->reflectionService->getClassSchema(static::class)->getMethod($this->actionMethodName);
323 
325  foreach ($this->arguments as $argument) {
326  $classSchemaMethodParameter = $classSchemaMethod->getParameter($argument->getName());
327  // At this point validation is skipped if there is an IgnoreValidation annotation.
328  // @todo: IgnoreValidation annotations could be evaluated in the ClassSchema and result in
329  // no validators being applied to the method parameter.
330  if ($classSchemaMethodParameter->ignoreValidation()) {
331  continue;
332  }
334  ‪$validator = $this->validatorResolver->createValidator(ConjunctionValidator::class, []);
335  foreach ($classSchemaMethodParameter->getValidators() as $validatorDefinition) {
337  $validatorInstance = $this->validatorResolver->createValidator($validatorDefinition['className'], $validatorDefinition['options']);
338  ‪$validator->addValidator(
339  $validatorInstance
340  );
341  }
342  $baseValidatorConjunction = $this->validatorResolver->getBaseValidatorConjunction($argument->getDataType());
343  if ($baseValidatorConjunction->count() > 0) {
344  ‪$validator->addValidator($baseValidatorConjunction);
345  }
346  $argument->setValidator(‪$validator);
347  }
348  }
349 
357  {
359  foreach ($this->arguments as $argument) {
360  ‪$validator = $this->validatorResolver->getBaseValidatorConjunction($argument->getDataType());
361  if (‪$validator !== null) {
362  $argument->setValidator(‪$validator);
363  }
364  }
365  }
366 
374  public function ‪processRequest(‪RequestInterface ‪$request): ResponseInterface
375  {
377  $this->request = ‪$request;
378  $this->uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
379  $this->uriBuilder->setRequest(‪$request);
380  $this->actionMethodName = $this->‪resolveActionMethodName();
383  $this->mvcPropertyMappingConfigurationService->initializePropertyMappingConfigurationFromRequest(‪$request, $this->arguments);
384  $this->‪initializeAction();
385  $actionInitializationMethodName = 'initialize' . ucfirst($this->actionMethodName);
387  $callable = [$this, $actionInitializationMethodName];
388  if (is_callable($callable)) {
389  $callable();
390  }
392  $this->view = $this->‪resolveView();
393  if ($this->view !== null && method_exists($this, 'initializeView')) {
394  $this->initializeView($this->view);
395  }
396  $response = $this->‪callActionMethod($request);
397  $this->‪renderAssetsForRequest($request);
398 
399  return $response;
400  }
401 
419  protected function ‪renderAssetsForRequest(‪$request): void
420  {
421  if (!$this->view instanceof AbstractTemplateView) {
422  // Only AbstractTemplateView (from Fluid engine, so this includes all TYPO3 Views based
423  // on TYPO3's AbstractTemplateView) supports renderSection(). The method is not
424  // declared on ViewInterface - so we must assert a specific class. We silently skip
425  // asset processing if the View doesn't match, so we don't risk breaking custom Views.
426  return;
427  }
428  $pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
429  $variables = ['request' => ‪$request, 'arguments' => ‪$this->arguments];
430  $headerAssets = $this->view->renderSection('HeaderAssets', $variables, true);
431  $footerAssets = $this->view->renderSection('FooterAssets', $variables, true);
432  if (!empty(trim($headerAssets))) {
433  $pageRenderer->addHeaderData($headerAssets);
434  }
435  if (!empty(trim($footerAssets))) {
436  $pageRenderer->addFooterData($footerAssets);
437  }
438  }
439 
448  protected function ‪resolveActionMethodName()
449  {
450  ‪$actionMethodName = $this->request->getControllerActionName() . 'Action';
451  if (!method_exists($this, ‪$actionMethodName)) {
452  throw new ‪NoSuchActionException('An action "' . ‪$actionMethodName . '" does not exist in controller "' . static::class . '".', 1186669086);
453  }
454  return ‪$actionMethodName;
455  }
456 
466  protected function ‪callActionMethod(‪RequestInterface ‪$request): ResponseInterface
467  {
468  // incoming request is not needed yet but can be passed into the action in the future like in symfony
469  // todo: support this via method-reflection
470 
471  $preparedArguments = [];
473  foreach ($this->arguments as $argument) {
474  $preparedArguments[] = $argument->getValue();
475  }
476  $validationResult = $this->arguments->validate();
477  if (!$validationResult->hasErrors()) {
478  $this->eventDispatcher->dispatch(new BeforeActionCallEvent(static::class, $this->actionMethodName, $preparedArguments));
479  $actionResult = $this->{$this->actionMethodName}(...$preparedArguments);
480  } else {
481  $actionResult = $this->{$this->errorMethodName}();
482  }
483 
484  if ($actionResult instanceof ResponseInterface) {
485  return $actionResult;
486  }
487  throw new \RuntimeException(
488  sprintf(
489  'Controller action %s did not return an instance of %s.',
490  static::class . '::' . $this->actionMethodName,
491  ResponseInterface::class
492  ),
493  1638554283
494  );
495  }
496 
503  protected function ‪resolveView(): ViewInterface
504  {
505  if ($this->viewResolver instanceof GenericViewResolver) {
506  /*
507  * This setter is not part of the ViewResolverInterface as it's only necessary to set
508  * the default view class from this point when using the generic view resolver which
509  * must respect the possibly overridden property defaultViewObjectName.
510  */
511  $this->viewResolver->setDefaultViewClass($this->defaultViewObjectName);
512  }
513 
514  ‪$view = $this->viewResolver->resolve(
515  $this->request->getControllerObjectName(),
516  $this->request->getControllerActionName(),
517  $this->request->getFormat()
518  );
520  if (‪$view instanceof AbstractTemplateView) {
521  $renderingContext = ‪$view->getRenderingContext();
522  if ($renderingContext instanceof ‪RenderingContext) {
523  $renderingContext->setRequest($this->request);
524  }
525  $templatePaths = ‪$view->getRenderingContext()->getTemplatePaths();
526  $templatePaths->fillDefaultsByPackageName($this->request->getControllerExtensionKey());
527  $templatePaths->setFormat($this->request->getFormat());
528  }
529  if (method_exists(‪$view, 'injectSettings')) {
530  ‪$view->injectSettings($this->settings);
531  }
532  ‪$view->assign('settings', $this->settings);
533  return ‪$view;
534  }
535 
539  protected function ‪setViewConfiguration(ViewInterface ‪$view): void
540  {
541  $configuration = $this->configurationManager->getConfiguration(
543  );
544  if (!empty($configuration['view']['templateRootPaths'])
545  && is_array($configuration['view']['templateRootPaths'])
546  && method_exists(‪$view, 'setTemplateRootPaths')
547  ) {
548  ‪$view->setTemplateRootPaths($configuration['view']['templateRootPaths']);
549  }
550  if (!empty($configuration['view']['layoutRootPaths'])
551  && is_array($configuration['view']['layoutRootPaths'])
552  && method_exists(‪$view, 'setLayoutRootPaths')
553  ) {
554  ‪$view->setLayoutRootPaths($configuration['view']['layoutRootPaths']);
555  }
556  if (!empty($configuration['view']['partialRootPaths'])
557  && is_array($configuration['view']['partialRootPaths'])
558  && method_exists(‪$view, 'setPartialRootPaths')
559  ) {
560  ‪$view->setPartialRootPaths($configuration['view']['partialRootPaths']);
561  }
562  }
563 
576  protected function ‪errorAction()
577  {
578  $this->‪addErrorFlashMessage();
579  if (($response = $this->‪forwardToReferringRequest()) !== null) {
580  return $response->withStatus(400);
581  }
582 
583  $response = $this->‪htmlResponse($this->‪getFlattenedValidationErrorMessage());
584  return $response->withStatus(400);
585  }
586 
593  protected function ‪addErrorFlashMessage()
594  {
595  $errorFlashMessage = $this->‪getErrorFlashMessage();
596  if ($errorFlashMessage !== false) {
597  $this->‪addFlashMessage($errorFlashMessage, '', ContextualFeedbackSeverity::ERROR);
598  }
599  }
600 
610  protected function ‪getErrorFlashMessage()
611  {
612  return 'An error occurred while trying to call ' . static::class . '->' . $this->actionMethodName . '()';
613  }
614 
623  protected function ‪forwardToReferringRequest(): ?ResponseInterface
624  {
626  $extbaseRequestParameters = $this->request->getAttribute('extbase');
627  $referringRequestArguments = $extbaseRequestParameters->getInternalArgument('__referrer') ?? null;
628  if (is_string($referringRequestArguments['@request'] ?? null)) {
629  $referrerArray = json_decode(
630  $this->hashService->validateAndStripHmac($referringRequestArguments['@request']),
631  true
632  );
633  ‪$arguments = [];
634  if (is_string($referringRequestArguments['arguments'] ?? null)) {
635  ‪$arguments = unserialize(
636  base64_decode($this->hashService->validateAndStripHmac($referringRequestArguments['arguments']))
637  );
638  }
639  $replacedArguments = array_replace_recursive(‪$arguments, $referrerArray);
640  $nonExtbaseBaseArguments = [];
641  foreach ($replacedArguments as $argumentName => $argumentValue) {
642  if (!is_string($argumentName) || $argumentName === '') {
643  throw new InvalidArgumentNameException('Invalid argument name.', 1623940985);
644  }
645  if (str_starts_with($argumentName, '__')
646  || in_array($argumentName, ['@extension', '@subpackage', '@controller', '@action', '@format'], true)
647  ) {
648  // Don't handle internalArguments here, not needed for forwardResponse()
649  continue;
650  }
651  $nonExtbaseBaseArguments[$argumentName] = $argumentValue;
652  }
653  return (new ForwardResponse((string)($replacedArguments['@action'] ?? 'index')))
654  ->withControllerName((string)($replacedArguments['@controller'] ?? 'Standard'))
655  ->withExtensionName((string)($replacedArguments['@extension'] ?? ''))
656  ->withArguments($nonExtbaseBaseArguments)
657  ->withArgumentsValidationResult($this->arguments->validate());
658  }
659 
660  return null;
661  }
662 
672  protected function ‪getFlattenedValidationErrorMessage()
673  {
674  $outputMessage = 'Validation failed while trying to call ' . static::class . '->' . $this->actionMethodName . '().' . PHP_EOL;
675  return $outputMessage;
676  }
677 
687  public function ‪addFlashMessage(string $messageBody, $messageTitle = '', ‪ContextualFeedbackSeverity $severity = ContextualFeedbackSeverity::OK, $storeInSession = true)
688  {
689  /* @var \TYPO3\CMS\Core\Messaging\FlashMessage $flashMessage */
690  $flashMessage = GeneralUtility::makeInstance(
691  FlashMessage::class,
692  $messageBody,
693  (string)$messageTitle,
694  $severity,
695  $storeInSession
696  );
697 
698  $this->‪getFlashMessageQueue()->enqueue($flashMessage);
699  }
700 
708  protected function ‪getFlashMessageQueue(string ‪$identifier = null): ‪FlashMessageQueue
709  {
710  if (‪$identifier === null) {
711  $pluginNamespace = $this->internalExtensionService->getPluginNamespace(
712  $this->request->getControllerExtensionName(),
713  $this->request->getPluginName()
714  );
715  ‪$identifier = 'extbase.flashmessages.' . $pluginNamespace;
716  }
717 
718  return $this->internalFlashMessageService->getMessageQueueByIdentifier(‪$identifier);
719  }
720 
734  protected function ‪redirect($actionName, $controllerName = null, $extensionName = null, array ‪$arguments = null, $pageUid = null, $_ = null, ‪$statusCode = 303): ResponseInterface
735  {
736  if ($controllerName === null) {
737  $controllerName = $this->request->getControllerName();
738  }
739  $this->uriBuilder->reset()->setCreateAbsoluteUri(true);
741  $this->uriBuilder->setTargetPageUid((int)$pageUid);
742  }
743  if (GeneralUtility::getIndpEnv('TYPO3_SSL')) {
744  $this->uriBuilder->setAbsoluteUriScheme('https');
745  }
746  $uri = $this->uriBuilder->uriFor($actionName, ‪$arguments, $controllerName, $extensionName);
747  return $this->‪redirectToUri($uri, null, ‪$statusCode);
748  }
749 
757  protected function ‪redirectToUri($uri, $_ = null, ‪$statusCode = 303): ResponseInterface
758  {
759  $uri = $this->‪addBaseUriIfNecessary($uri);
760  return new RedirectResponse($uri, ‪$statusCode);
761  }
762 
771  protected function ‪addBaseUriIfNecessary($uri)
772  {
773  return GeneralUtility::locationHeaderUrl((string)$uri);
774  }
775 
786  public function ‪throwStatus(‪$statusCode, $statusMessage = null, $content = null)
787  {
788  if ($content === null) {
789  $content = ‪$statusCode . ' ' . $statusMessage;
790  }
791  $response = $this->responseFactory
792  ->createResponse((int)‪$statusCode, (string)$statusMessage)
793  ->withBody($this->streamFactory->createStream((string)$content));
794  throw new ‪PropagateResponseException($response, 1476045871);
795  }
796 
805  {
807  foreach ($this->arguments as $argument) {
808  $argumentName = $argument->getName();
809  if ($this->request->hasArgument($argumentName)) {
810  $this->‪setArgumentValue($argument, $this->request->getArgument($argumentName));
811  } elseif ($argument->isRequired()) {
812  throw new RequiredArgumentMissingException('Required argument "' . $argumentName . '" is not set for ' . $this->request->getControllerObjectName() . '->' . $this->request->getControllerActionName() . '.', 1298012500);
813  }
814  }
815  }
816 
820  private function ‪setArgumentValue(Argument $argument, $rawValue): void
821  {
822  if ($rawValue === null) {
823  $argument->setValue(null);
824  return;
825  }
826  $dataType = $argument->getDataType();
827  if ($rawValue instanceof $dataType) {
828  $argument->setValue($rawValue);
829  return;
830  }
831  $this->propertyMapper->resetMessages();
832  try {
833  $argument->setValue(
834  $this->propertyMapper->convert(
835  $rawValue,
836  $dataType,
837  $argument->getPropertyMappingConfiguration()
838  )
839  );
840  } catch (‪TargetNotFoundException $e) {
841  // for optional arguments no exception is thrown.
842  if ($argument->isRequired()) {
843  throw $e;
844  }
845  }
846  $argument->getValidationResults()->merge($this->propertyMapper->getMessages());
847  }
848 
854  protected function ‪htmlResponse(string $html = null): ResponseInterface
855  {
856  return $this->responseFactory->createResponse()
857  ->withHeader('Content-Type', 'text/html; charset=utf-8')
858  ->withBody($this->streamFactory->createStream((string)($html ?? $this->view->render())));
859  }
860 
867  protected function ‪jsonResponse(string $json = null): ResponseInterface
868  {
869  return $this->responseFactory->createResponse()
870  ->withHeader('Content-Type', 'application/json; charset=utf-8')
871  ->withBody($this->streamFactory->createStream((string)($json ?? $this->view->render())));
872  }
873 }
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\resolveActionMethodName
‪string resolveActionMethodName()
Definition: ActionController.php:431
‪TYPO3\CMS\Extbase\Validation\Validator\ConjunctionValidator
Definition: ConjunctionValidator.php:26
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\redirect
‪redirect($actionName, $controllerName=null, $extensionName=null, array $arguments=null, $pageUid=null, $_=null, $statusCode=303)
Definition: ActionController.php:717
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectViewResolver
‪injectViewResolver(ViewResolverInterface $viewResolver)
Definition: ActionController.php:194
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$request
‪RequestInterface $request
Definition: ActionController.php:122
‪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:25
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$configurationManager
‪ConfigurationManagerInterface $configurationManager
Definition: ActionController.php:146
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\addBaseUriIfNecessary
‪string addBaseUriIfNecessary($uri)
Definition: ActionController.php:754
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\redirectToUri
‪redirectToUri($uri, $_=null, $statusCode=303)
Definition: ActionController.php:740
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\getErrorFlashMessage
‪string bool getErrorFlashMessage()
Definition: ActionController.php:593
‪TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder
Definition: UriBuilder.php:38
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$view
‪ViewInterface $view
Definition: ActionController.php:89
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\addErrorFlashMessage
‪addErrorFlashMessage()
Definition: ActionController.php:576
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\initializeAction
‪initializeAction()
Definition: ActionController.php:255
‪TYPO3\CMS\Extbase\Validation\ValidatorResolver
Definition: ValidatorResolver.php:38
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$viewResolver
‪ViewResolverInterface $viewResolver
Definition: ActionController.php:83
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectPropertyMapper
‪injectPropertyMapper(PropertyMapper $propertyMapper)
Definition: ActionController.php:228
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$defaultViewObjectName
‪string $defaultViewObjectName
Definition: ActionController.php:96
‪TYPO3\CMS\Extbase\Event\Mvc\BeforeActionCallEvent
Definition: BeforeActionCallEvent.php:25
‪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:137
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\mapRequestArgumentsToControllerArguments
‪mapRequestArgumentsToControllerArguments()
Definition: ActionController.php:787
‪TYPO3\CMS\Extbase\Mvc\Controller\Argument\getPropertyMappingConfiguration
‪MvcPropertyMappingConfiguration getPropertyMappingConfiguration()
Definition: Argument.php:249
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$responseFactory
‪ResponseFactoryInterface $responseFactory
Definition: ActionController.php:64
‪TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface
Definition: ConfigurationManagerInterface.php:28
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$eventDispatcher
‪EventDispatcherInterface $eventDispatcher
Definition: ActionController.php:117
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectStreamFactory
‪injectStreamFactory(StreamFactoryInterface $streamFactory)
Definition: ActionController.php:168
‪TYPO3\CMS\Extbase\Http\ForwardResponse
Definition: ForwardResponse.php:24
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\processRequest
‪processRequest(RequestInterface $request)
Definition: ActionController.php:357
‪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:236
‪TYPO3\CMS\Fluid\View\TemplateView
Definition: TemplateView.php:22
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\forwardToReferringRequest
‪forwardToReferringRequest()
Definition: ActionController.php:606
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\initializeControllerArgumentsBaseValidators
‪initializeControllerArgumentsBaseValidators()
Definition: ActionController.php:339
‪TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface\CONFIGURATION_TYPE_FRAMEWORK
‪const CONFIGURATION_TYPE_FRAMEWORK
Definition: ConfigurationManagerInterface.php:29
‪TYPO3\CMS\Extbase\Mvc\Controller\Argument\getValidationResults
‪getValidationResults()
Definition: Argument.php:290
‪TYPO3\CMS\Extbase\Reflection\ReflectionService
Definition: ReflectionService.php:28
‪TYPO3\CMS\Core\Type\ContextualFeedbackSeverity
‪ContextualFeedbackSeverity
Definition: ContextualFeedbackSeverity.php:25
‪TYPO3\CMS\Core\Utility\MathUtility\canBeInterpretedAsInteger
‪static bool canBeInterpretedAsInteger(mixed $var)
Definition: MathUtility.php:69
‪TYPO3\CMS\Core\Page\PageRenderer
Definition: PageRenderer.php:46
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\htmlResponse
‪htmlResponse(string $html=null)
Definition: ActionController.php:837
‪TYPO3\CMS\Redirects\Message\$statusCode
‪identifier readonly UriInterface readonly int $statusCode
Definition: RedirectWasHitMessage.php:34
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\jsonResponse
‪jsonResponse(string $json=null)
Definition: ActionController.php:850
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\callActionMethod
‪callActionMethod(RequestInterface $request)
Definition: ActionController.php:449
‪TYPO3\CMS\Extbase\Mvc\Controller\Argument\isRequired
‪bool isRequired()
Definition: Argument.php:169
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\addFlashMessage
‪addFlashMessage(string $messageBody, $messageTitle='', ContextualFeedbackSeverity $severity=ContextualFeedbackSeverity::OK, $storeInSession=true)
Definition: ActionController.php:670
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$settings
‪array $settings
Definition: ActionController.php:132
‪TYPO3\CMS\Extbase\Mvc\View\ViewResolverInterface
Definition: ViewResolverInterface.php:26
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectInternalExtensionService
‪injectInternalExtensionService(ExtensionService $extensionService)
Definition: ActionController.php:244
‪$validator
‪if(isset($args['d'])) $validator
Definition: validateRstFiles.php:262
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$uriBuilder
‪TYPO3 CMS Extbase Mvc Web Routing UriBuilder $uriBuilder
Definition: ActionController.php:126
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectConfigurationManager
‪injectConfigurationManager(ConfigurationManagerInterface $configurationManager)
Definition: ActionController.php:176
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\initializeActionMethodValidators
‪initializeActionMethodValidators()
Definition: ActionController.php:299
‪TYPO3\CMS\Extbase\Mvc\View\GenericViewResolver
Definition: GenericViewResolver.php:27
‪TYPO3\CMS\Extbase\Property\PropertyMapper
Definition: PropertyMapper.php:30
‪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:78
‪TYPO3\CMS\Core\Http\PropagateResponseException
Definition: PropagateResponseException.php:47
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\initializeActionMethodArguments
‪initializeActionMethodArguments()
Definition: ActionController.php:268
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$reflectionService
‪TYPO3 CMS Extbase Reflection ReflectionService $reflectionService
Definition: ActionController.php:73
‪TYPO3\CMS\Core\Http\RedirectResponse
Definition: RedirectResponse.php:30
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectReflectionService
‪injectReflectionService(ReflectionService $reflectionService)
Definition: ActionController.php:202
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\setViewConfiguration
‪setViewConfiguration(ViewInterface $view)
Definition: ActionController.php:522
‪TYPO3\CMS\Extbase\Mvc\Exception\InvalidArgumentNameException
Definition: InvalidArgumentNameException.php:25
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\errorAction
‪ResponseInterface errorAction()
Definition: ActionController.php:559
‪TYPO3\CMS\Extbase\Mvc\RequestInterface
Definition: RequestInterface.php:24
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$errorMethodName
‪string $errorMethodName
Definition: ActionController.php:109
‪TYPO3\CMS\Core\Messaging\FlashMessage
Definition: FlashMessage.php:27
‪TYPO3\CMS\Extbase\Service\ExtensionService
Definition: ExtensionService.php:34
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController
Definition: ActionController.php:61
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\getFlashMessageQueue
‪getFlashMessageQueue(string $identifier=null)
Definition: ActionController.php:691
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectEventDispatcher
‪injectEventDispatcher(EventDispatcherInterface $eventDispatcher)
Definition: ActionController.php:220
‪TYPO3\CMS\Core\Utility\MathUtility
Definition: MathUtility.php:24
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectResponseFactory
‪injectResponseFactory(ResponseFactoryInterface $responseFactory)
Definition: ActionController.php:163
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\throwStatus
‪never throwStatus($statusCode, $statusMessage=null, $content=null)
Definition: ActionController.php:769
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\getFlattenedValidationErrorMessage
‪string getFlattenedValidationErrorMessage()
Definition: ActionController.php:655
‪TYPO3\CMS\Extbase\Mvc\Controller\MvcPropertyMappingConfigurationService
Definition: MvcPropertyMappingConfigurationService.php:50
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectMvcPropertyMappingConfigurationService
‪injectMvcPropertyMappingConfigurationService(MvcPropertyMappingConfigurationService $mvcPropertyMappingConfigurationService)
Definition: ActionController.php:215
‪TYPO3\CMS\Extbase\Mvc\Controller\ControllerInterface
Definition: ControllerInterface.php:25
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$internalExtensionService
‪ExtensionService $internalExtensionService
Definition: ActionController.php:161
‪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\ExtbaseRequestParameters
Definition: ExtbaseRequestParameters.php:35
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$streamFactory
‪StreamFactoryInterface $streamFactory
Definition: ActionController.php:68
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectValidatorResolver
‪injectValidatorResolver(ValidatorResolver $validatorResolver)
Definition: ActionController.php:186
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:52
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$internalFlashMessageService
‪FlashMessageService $internalFlashMessageService
Definition: ActionController.php:156
‪TYPO3\CMS\Fluid\Core\Rendering\RenderingContext
Definition: RenderingContext.php:35
‪TYPO3\CMS\Extbase\Property\Exception\TargetNotFoundException
Definition: TargetNotFoundException.php:25
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\resolveView
‪resolveView()
Definition: ActionController.php:486
‪TYPO3\CMS\Core\Messaging\FlashMessageQueue
Definition: FlashMessageQueue.php:29
‪TYPO3\CMS\Extbase\Validation\Validator\ValidatorInterface
Definition: ValidatorInterface.php:26
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$actionMethodName
‪string $actionMethodName
Definition: ActionController.php:103
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\setArgumentValue
‪setArgumentValue(Argument $argument, $rawValue)
Definition: ActionController.php:803
‪TYPO3\CMS\Extbase\Mvc\Controller\Argument
Definition: Argument.php:27
‪TYPO3\CMS\Extbase\Mvc\Request
Definition: Request.php:35
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$mvcPropertyMappingConfigurationService
‪TYPO3 CMS Extbase Mvc Controller MvcPropertyMappingConfigurationService $mvcPropertyMappingConfigurationService
Definition: ActionController.php:113
‪TYPO3\CMS\Core\Messaging\FlashMessageService
Definition: FlashMessageService.php:27
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\renderAssetsForRequest
‪renderAssetsForRequest($request)
Definition: ActionController.php:402
‪TYPO3\CMS\Webhooks\Message\$identifier
‪identifier readonly string $identifier
Definition: FileAddedMessage.php:37
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\injectHashService
‪injectHashService(HashService $hashService)
Definition: ActionController.php:210
‪TYPO3\CMS\Extbase\Mvc\Controller\Argument\setValue
‪Argument setValue($rawValue)
Definition: Argument.php:225
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$propertyMapper
‪PropertyMapper $propertyMapper
Definition: ActionController.php:151