‪TYPO3CMS  ‪main
Module.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
21 
25 class ‪Module extends ‪BaseModule implements ‪ModuleInterface
26 {
27  protected array ‪$routes;
28 
29  public function ‪getRoutes(): array
30  {
31  return ‪$this->routes;
32  }
33 
34  public function ‪getDefaultRouteOptions(): array
35  {
36  $defaultRouteOptions = [];
37 
38  if ($this->routes !== []) {
39  foreach ($this->routes as $routeIdentifier => ‪$routeOptions) {
40  $defaultRouteOptions[$routeIdentifier] = array_replace_recursive(
41  $this->routeOptions,
43  [
44  'module' => $this,
45  'packageName' => $this->packageName,
46  'absolutePackagePath' => $this->absolutePackagePath,
47  'access' => $this->access,
48  ]
49  );
50  }
51  } elseif ($this->‪hasSubModules()) {
52  // In case no routes are defined but the module has submodules,
53  // fall back and use the first submodules' route options instead.
54  $submodules = $this->‪getSubModules();
55  $firstSubModule = reset($submodules);
56  $defaultRouteOptions = $firstSubModule->getDefaultRouteOptions();
57  }
58 
59  if (!isset($defaultRouteOptions['_default'])) {
61  'No default route could be resolved for module ' . $this->identifier,
62  1674063354
63  );
64  }
65 
66  return $defaultRouteOptions;
67  }
68 
69  public static function ‪createFromConfiguration(string ‪$identifier, array $configuration): static
70  {
71  $obj = parent::createFromConfiguration(‪$identifier, $configuration);
72  $obj->routes = $configuration['routes'] ?? [];
73  return $obj;
74  }
75 }
‪TYPO3\CMS\Backend\Module\ModuleInterface\getSubModules
‪ModuleInterface[] getSubModules()
‪TYPO3\CMS\Backend\Module\Module\createFromConfiguration
‪static createFromConfiguration(string $identifier, array $configuration)
Definition: Module.php:69
‪TYPO3\CMS\Backend\Exception\NonRoutableModuleException
Definition: NonRoutableModuleException.php:24
‪TYPO3\CMS\Backend\Module\Module\$routes
‪array $routes
Definition: Module.php:27
‪TYPO3\CMS\Backend\Module\Module
Definition: Module.php:26
‪TYPO3\CMS\Backend\Module\Module\getDefaultRouteOptions
‪getDefaultRouteOptions()
Definition: Module.php:34
‪TYPO3\CMS\Backend\Module\BaseModule\hasSubModules
‪hasSubModules()
Definition: BaseModule.php:151
‪TYPO3\CMS\Backend\Module\BaseModule
Definition: BaseModule.php:26
‪TYPO3\CMS\Backend\Module\Module\getRoutes
‪getRoutes()
Definition: Module.php:29
‪TYPO3\CMS\Backend\Module\BaseModule\$identifier
‪string $identifier
Definition: BaseModule.php:27
‪TYPO3\CMS\Backend\Module\ModuleInterface
Definition: ModuleInterface.php:24
‪TYPO3\CMS\Backend\Module\BaseModule\$routeOptions
‪array $routeOptions
Definition: BaseModule.php:49
‪TYPO3\CMS\Backend\Module
Definition: BaseModule.php:18