‪TYPO3CMS  10.4
Request.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 
16 namespace ‪TYPO3\CMS\Extbase\Mvc;
17 
26 
31 {
32  const ‪PATTERN_MATCH_FORMAT = '/^[a-z0-9]{1,5}$/';
33 
37  protected ‪$pluginName = '';
38 
43 
50 
55 
59  protected ‪$controllerName = 'Standard';
60 
64  protected ‪$controllerActionName = 'index';
65 
69  protected ‪$arguments = [];
70 
79  protected ‪$internalArguments = [];
80 
84  protected ‪$format = 'txt';
85 
89  protected ‪$dispatched = false;
90 
96  protected ‪$originalRequest;
97 
104 
108  protected ‪$method = 'GET';
109 
113  protected ‪$requestUri;
114 
118  protected ‪$baseUri;
119 
123  protected ‪$isCached = false;
124 
130  public function ‪setDispatched($flag)
131  {
132  $this->dispatched = (bool)$flag;
133  }
134 
144  public function ‪isDispatched()
145  {
146  return ‪$this->dispatched;
147  }
148 
152  public function ‪__construct(string $controllerClassName = '')
153  {
154  $this->controllerObjectName = $controllerClassName;
155  }
156 
160  public function ‪getControllerObjectName(): string
161  {
163  }
164 
172  {
174  $this->controllerExtensionName = $nameParts['extensionName'];
175  $this->controllerSubpackageKey = $nameParts['subpackageKey'] ?? null;
176  $this->controllerName = $nameParts['controllerName'];
177  }
178 
185  public function ‪setPluginName(‪$pluginName = null)
186  {
187  if (‪$pluginName !== null) {
188  $this->pluginName = ‪$pluginName;
189  }
190  }
191 
197  public function ‪getPluginName()
198  {
199  return ‪$this->pluginName;
200  }
201 
210  {
211  if (‪$controllerExtensionName !== null) {
212  $this->controllerExtensionName = ‪$controllerExtensionName;
213  }
214  }
215 
221  public function ‪getControllerExtensionName()
222  {
224  }
225 
231  public function ‪getControllerExtensionKey()
232  {
233  return ‪GeneralUtility::camelCaseToLowerCaseUnderscored($this->controllerExtensionName);
234  }
235 
242  public function ‪setControllerSubpackageKey($subpackageKey)
243  {
244  $this->controllerSubpackageKey = $subpackageKey;
245  }
246 
254  public function ‪getControllerSubpackageKey()
255  {
257  }
258 
263 
268  {
269  // this is only needed as long as forwarded requests are altered and unless there
270  // is no new request object created by the request builder.
271  $this->controllerAliasToClassNameMapping = ‪$controllerAliasToClassNameMapping;
272  }
273 
283  {
284  if (!is_string(‪$controllerName) && ‪$controllerName !== null) {
285  throw new ‪InvalidControllerNameException('The controller name must be a valid string, ' . gettype(‪$controllerName) . ' given.', 1187176358);
286  }
287  if (‪$controllerName !== null) {
288  $this->controllerName = ‪$controllerName;
289  $this->controllerObjectName = $this->controllerAliasToClassNameMapping[‪$controllerName] ?? '';
290  // There might be no Controller Class, for example for Fluid Templates.
291  }
292  }
293 
300  public function ‪getControllerName()
301  {
303  }
304 
314  public function ‪setControllerActionName($actionName)
315  {
316  if (!is_string($actionName) && $actionName !== null) {
317  throw new ‪InvalidActionNameException('The action name must be a valid string, ' . gettype($actionName) . ' given (' . $actionName . ').', 1187176359);
318  }
319  if ($actionName[0] !== strtolower($actionName[0]) && $actionName !== null) {
320  throw new ‪InvalidActionNameException('The action name must start with a lower case letter, "' . $actionName . '" does not match this criteria.', 1218473352);
321  }
322  if ($actionName !== null) {
323  $this->controllerActionName = $actionName;
324  }
325  }
326 
332  public function ‪getControllerActionName()
333  {
335  if (‪$controllerObjectName !== '' && $this->controllerActionName === strtolower($this->controllerActionName)) {
336  // todo: this is nonsense! We can detect a non existing method in
337  // todo: \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin, if necessary.
338  // todo: At this point, we want to have a getter for a fixed value.
339  $actionMethodName = $this->controllerActionName . 'Action';
340  $classMethods = get_class_methods(‪$controllerObjectName);
341  if (is_array($classMethods)) {
342  foreach ($classMethods as $existingMethodName) {
343  if (strtolower($existingMethodName) === strtolower($actionMethodName)) {
344  $this->controllerActionName = substr($existingMethodName, 0, -6);
345  break;
346  }
347  }
348  }
349  }
351  }
352 
361  public function ‪setArgument($argumentName, $value)
362  {
363  if (!is_string($argumentName) || $argumentName === '') {
364  throw new InvalidArgumentNameException('Invalid argument name.', 1210858767);
365  }
366  if ($argumentName[0] === '_' && $argumentName[1] === '_') {
367  $this->internalArguments[$argumentName] = $value;
368  return;
369  }
370  if (!in_array($argumentName, ['@extension', '@subpackage', '@controller', '@action', '@format'], true)) {
371  $this->arguments[$argumentName] = $value;
372  }
373  }
374 
382  public function ‪setArguments(array ‪$arguments)
383  {
384  $this->arguments = [];
385  foreach (‪$arguments as $argumentName => $argumentValue) {
386  $this->‪setArgument($argumentName, $argumentValue);
387  }
388  }
389 
395  public function ‪getArguments()
396  {
397  return ‪$this->arguments;
398  }
399 
408  public function ‪getArgument($argumentName)
409  {
410  if (!isset($this->arguments[$argumentName])) {
411  throw new NoSuchArgumentException('An argument "' . $argumentName . '" does not exist for this request.', 1176558158);
412  }
413  return $this->arguments[$argumentName];
414  }
415 
423  public function ‪hasArgument($argumentName)
424  {
425  return isset($this->arguments[$argumentName]);
426  }
427 
434  public function ‪setFormat(‪$format)
435  {
436  $this->format = ‪$format;
437  }
438 
444  public function ‪getFormat()
445  {
446  return ‪$this->format;
447  }
448 
455  public function ‪getOriginalRequest()
456  {
458  }
459 
465  {
466  $this->originalRequest = ‪$originalRequest;
467  }
468 
475  public function ‪getOriginalRequestMappingResults()
476  {
477  if ($this->originalRequestMappingResults === null) {
478  return new Result();
479  }
481  }
482 
488  {
489  $this->originalRequestMappingResults = ‪$originalRequestMappingResults;
490  }
491 
499  public function ‪getInternalArguments()
500  {
502  }
503 
511  public function ‪getInternalArgument($argumentName)
512  {
513  if (!isset($this->internalArguments[$argumentName])) {
514  return null;
515  }
516  return $this->internalArguments[$argumentName];
517  }
518 
526  public function ‪setMethod(‪$method)
527  {
528  if (‪$method === '' || strtoupper(‪$method) !== ‪$method) {
529  throw new InvalidRequestMethodException('The request method "' . ‪$method . '" is not supported.', 1217778382);
530  }
531  $this->method = ‪$method;
532  }
533 
539  public function ‪getMethod()
540  {
541  return ‪$this->method;
542  }
543 
550  public function ‪setRequestUri(‪$requestUri)
551  {
552  $this->requestUri = ‪$requestUri;
553  }
554 
560  public function ‪getRequestUri()
561  {
562  return ‪$this->requestUri;
563  }
564 
571  public function ‪setBaseUri(‪$baseUri)
572  {
573  $this->baseUri = ‪$baseUri;
574  }
575 
581  public function ‪getBaseUri()
582  {
583  return ‪$this->baseUri;
584  }
585 
592  public function ‪setIsCached(‪$isCached)
593  {
594  $this->‪isCached = (bool)‪$isCached;
595  }
596 
603  public function ‪isCached()
604  {
605  return ‪$this->isCached;
606  }
607 }
‪TYPO3\CMS\Extbase\Mvc\Request\$method
‪string $method
Definition: Request.php:95
‪TYPO3\CMS\Extbase\Mvc\Request\$controllerAliasToClassNameMapping
‪array $controllerAliasToClassNameMapping
Definition: Request.php:245
‪TYPO3\CMS\Extbase\Mvc\Request\setRequestUri
‪setRequestUri($requestUri)
Definition: Request.php:533
‪TYPO3\CMS\Extbase\Mvc\Request\$format
‪string $format
Definition: Request.php:75
‪TYPO3\CMS\Extbase\Mvc\Request\getControllerObjectName
‪string getControllerObjectName()
Definition: Request.php:144
‪TYPO3\CMS\Extbase\Annotation
Definition: IgnoreValidation.php:18
‪TYPO3\CMS\Extbase\Mvc\Exception\InvalidControllerNameException
Definition: InvalidControllerNameException.php:26
‪TYPO3
‪TYPO3\CMS\Extbase\Mvc\Request\setOriginalRequest
‪setOriginalRequest(\TYPO3\CMS\Extbase\Mvc\Request $originalRequest)
Definition: Request.php:447
‪TYPO3\CMS\Extbase\Mvc\Request\isCached
‪bool isCached()
Definition: Request.php:586
‪TYPO3\CMS\Extbase\Mvc\Request\setControllerAliasToClassNameMapping
‪setControllerAliasToClassNameMapping(array $controllerAliasToClassNameMapping)
Definition: Request.php:250
‪TYPO3\CMS\Extbase\Mvc\Request\getPluginName
‪string getPluginName()
Definition: Request.php:181
‪TYPO3\CMS\Extbase\Mvc\Request\getRequestUri
‪string getRequestUri()
Definition: Request.php:543
‪TYPO3\CMS\Extbase\Mvc\Request\$requestUri
‪string $requestUri
Definition: Request.php:99
‪TYPO3\CMS\Extbase\Mvc\Request\$controllerObjectName
‪string $controllerObjectName
Definition: Request.php:50
‪TYPO3\CMS\Extbase\Mvc\Request\getControllerExtensionKey
‪string getControllerExtensionKey()
Definition: Request.php:215
‪TYPO3\CMS\Extbase\Mvc\Request\PATTERN_MATCH_FORMAT
‪const PATTERN_MATCH_FORMAT
Definition: Request.php:32
‪TYPO3\CMS\Extbase\Mvc
‪TYPO3\CMS\Extbase\Mvc\Request\$controllerName
‪string $controllerName
Definition: Request.php:54
‪TYPO3\CMS\Extbase\Mvc\Request\hasArgument
‪bool hasArgument($argumentName)
Definition: Request.php:406
‪TYPO3\CMS\Extbase\Mvc\Request\setArgument
‪setArgument($argumentName, $value)
Definition: Request.php:344
‪TYPO3\CMS\Core\Utility\GeneralUtility\camelCaseToLowerCaseUnderscored
‪static string camelCaseToLowerCaseUnderscored($string)
Definition: GeneralUtility.php:914
‪TYPO3\CMS\Extbase\Mvc\Request\$dispatched
‪bool $dispatched
Definition: Request.php:79
‪TYPO3\CMS\Extbase\Mvc\Request\getInternalArguments
‪array getInternalArguments()
Definition: Request.php:482
‪TYPO3\CMS\Extbase\Mvc\Request\setControllerObjectName
‪setControllerObjectName($controllerObjectName)
Definition: Request.php:155
‪TYPO3\CMS\Extbase\Mvc\Request\$controllerActionName
‪string $controllerActionName
Definition: Request.php:58
‪TYPO3\CMS\Extbase\Mvc\Request\getBaseUri
‪string getBaseUri()
Definition: Request.php:564
‪TYPO3\CMS\Extbase\Error\Result
Definition: Result.php:24
‪TYPO3\CMS\Extbase\Mvc\Request\setControllerActionName
‪setControllerActionName($actionName)
Definition: Request.php:297
‪TYPO3\CMS\Extbase\Mvc\Request\setControllerSubpackageKey
‪setControllerSubpackageKey($subpackageKey)
Definition: Request.php:226
‪TYPO3\CMS\Extbase\Mvc\Request\getInternalArgument
‪string getInternalArgument($argumentName)
Definition: Request.php:494
‪TYPO3\CMS\Extbase\Mvc\Request\setOriginalRequestMappingResults
‪setOriginalRequestMappingResults(Result $originalRequestMappingResults)
Definition: Request.php:470
‪TYPO3\CMS\Extbase\Mvc\Request\setBaseUri
‪setBaseUri($baseUri)
Definition: Request.php:554
‪TYPO3\CMS\Extbase\Mvc\Request\setIsCached
‪setIsCached($isCached)
Definition: Request.php:575
‪TYPO3\CMS\Extbase\Mvc\Request\getControllerSubpackageKey
‪string getControllerSubpackageKey()
Definition: Request.php:238
‪TYPO3\CMS\Extbase\Mvc\Request\isDispatched
‪bool isDispatched()
Definition: Request.php:128
‪TYPO3\CMS\Extbase\Mvc\Request\$internalArguments
‪array $internalArguments
Definition: Request.php:71
‪TYPO3\CMS\Core\Utility\ClassNamingUtility\explodeObjectControllerName
‪static array explodeObjectControllerName($controllerObjectName)
Definition: ClassNamingUtility.php:66
‪TYPO3\CMS\Extbase\Mvc\Request\getControllerName
‪string getControllerName()
Definition: Request.php:283
‪TYPO3\CMS\Extbase\Mvc\Request\getArguments
‪array getArguments()
Definition: Request.php:378
‪TYPO3\CMS\Extbase\Mvc\Request\getOriginalRequestMappingResults
‪TYPO3 CMS Extbase Error Result getOriginalRequestMappingResults()
Definition: Request.php:458
‪TYPO3\CMS\Core\Utility\ClassNamingUtility
Definition: ClassNamingUtility.php:24
‪TYPO3\CMS\Extbase\Mvc\Request\setControllerExtensionName
‪setControllerExtensionName($controllerExtensionName)
Definition: Request.php:193
‪TYPO3\CMS\Extbase\Mvc\Request\$controllerExtensionName
‪string $controllerExtensionName
Definition: Request.php:40
‪TYPO3\CMS\Extbase\Mvc\Request\setFormat
‪setFormat($format)
Definition: Request.php:417
‪TYPO3\CMS\Extbase\Mvc\Request\$pluginName
‪string $pluginName
Definition: Request.php:36
‪TYPO3\CMS\Extbase\Mvc\Exception\InvalidRequestMethodException
Definition: InvalidRequestMethodException.php:26
‪TYPO3\CMS\Extbase\Mvc\Request\setControllerName
‪setControllerName($controllerName)
Definition: Request.php:265
‪TYPO3\CMS\Extbase\Mvc\Exception\InvalidArgumentNameException
Definition: InvalidArgumentNameException.php:26
‪TYPO3\CMS\Extbase\Mvc\RequestInterface
Definition: RequestInterface.php:22
‪TYPO3\CMS\Extbase\Mvc\Request\$originalRequestMappingResults
‪TYPO3 CMS Extbase Error Result $originalRequestMappingResults
Definition: Request.php:91
‪TYPO3\CMS\Extbase\Mvc\Request\getFormat
‪string getFormat()
Definition: Request.php:427
‪TYPO3\CMS\Extbase\Mvc\Exception\InvalidActionNameException
Definition: InvalidActionNameException.php:26
‪TYPO3\CMS\Extbase\Mvc\Request\__construct
‪__construct(string $controllerClassName='')
Definition: Request.php:136
‪TYPO3\CMS\Extbase\Mvc\Request\setDispatched
‪setDispatched($flag)
Definition: Request.php:114
‪TYPO3\CMS\Extbase\Mvc\Request\$isCached
‪bool $isCached
Definition: Request.php:107
‪TYPO3\CMS\Extbase\Mvc\Request\setArguments
‪setArguments(array $arguments)
Definition: Request.php:365
‪TYPO3\CMS\Extbase\Mvc\Request\$baseUri
‪string $baseUri
Definition: Request.php:103
‪TYPO3\CMS\Extbase\Mvc\Request\$arguments
‪array $arguments
Definition: Request.php:62
‪TYPO3\CMS\Extbase\Mvc\Request\setPluginName
‪setPluginName($pluginName=null)
Definition: Request.php:169
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:46
‪TYPO3\CMS\Extbase\Mvc\Request\$controllerSubpackageKey
‪string $controllerSubpackageKey
Definition: Request.php:46
‪TYPO3\CMS\Extbase\Mvc\Request\getControllerActionName
‪string getControllerActionName()
Definition: Request.php:315
‪TYPO3\CMS\Extbase\Mvc\Request\setMethod
‪setMethod($method)
Definition: Request.php:509
‪TYPO3\CMS\Extbase\Mvc\Request\getMethod
‪string getMethod()
Definition: Request.php:522
‪TYPO3\CMS\Extbase\Mvc\Request
Definition: Request.php:31
‪TYPO3\CMS\Extbase\Mvc\Request\getOriginalRequest
‪TYPO3 CMS Extbase Mvc Request getOriginalRequest()
Definition: Request.php:438
‪TYPO3\CMS\Extbase\Mvc\Exception\NoSuchArgumentException
Definition: NoSuchArgumentException.php:26
‪TYPO3\CMS\Extbase\Mvc\Request\getControllerExtensionName
‪string getControllerExtensionName()
Definition: Request.php:205
‪TYPO3\CMS\Extbase\Mvc\Request\getArgument
‪string array getArgument($argumentName)
Definition: Request.php:391
‪TYPO3\CMS\Extbase\Mvc\Request\$originalRequest
‪TYPO3 CMS Extbase Mvc Request $originalRequest
Definition: Request.php:85