Attention
TYPO3 v11 has reached end-of-life as of October 31th 2024 and is no longer being maintained. Use the version switcher on the top left of this page to select documentation for a supported version of TYPO3.
Need more time before upgrading? You can purchase Extended Long Term Support (ELTS) for TYPO3 v11 here: TYPO3 ELTS.
Create a directory structure
Extbase requires or defaults to a certain directory structure. It is considered best practise to always stick to this structure.
On the first level EXT:tea has the following structure:
$ tree /path/to/extension/tea
├── Classes
├── Configuration
├── Documentation
├── Resources
├── Tests
├── composer.json
├── ext_emconf.php
├── ...
└── README.md
Directory Classes
The folder Classes
should contain all PHP classes provided by the
extension. Otherwise they are not available in the default
autoloading.
See also the general chapter on the folder Classes.
In the composer.
we have defined that all PHP classes are
automatically loaded from the Classes
directory (and additionally
in file:ext_
for legacy installations):
{
"name": "ttn/tea",
"autoload": {
"psr-4": {
"TTN\\Tea\\": "Classes/"
}
}
}
$EM_CONF[$_EXTKEY] = [
'autoload' => [
'psr-4' => [
'TTN\\Tea\\' => 'Classes/',
],
],
];
The key of the psr-4 array, here 'TTN\\
defines the namespace
that all classes in this directory must be situated in to be found by
the PSR-4 autoloading.
The folder Classes
contains several subfolders:
$ tree path/to/extension/tea
├── Classes
├── Controller
├── Domain
| ├── Model
| └── Repository
└── ViewHelpers
Extbase is based on the pattern Model-View-Controller (MVC). And you can already find directories for the model and the controller here.
In most cases the view is handled by classes provided by the framework and configured via templating. Therefore there is no folder for the view as a whole.
Additional logic needed for the view can be provided by ViewHelpers and should be stored in the according folder.
Note
ViewHelpers are a feature of the Fluid templating engine. See also the chapter Developing a custom ViewHelper.
Directory Configuration
See also the general chapter on the folder Configuration.
The folder Configuration
contains several subfolders:
$ tree path/to/extension/tea
├── Configuration
├── FlexForms
├── TCA
| └── Overrides
├── TsConfig
| ├── Page
| └── User
├── TypoScript
| ├── constants.typoscript
| └── setup.typoscript
└── Services.yaml
Configuration/
Flex Forms - Contains the configuration of additional input fields to configure plugins in the format FlexForm.
Configuration/
TCA - Contains the TYPO3 configuration array (TCA) as PHP arrays.
Configuration/
TCA/ Overrides - Can be used to extend the TCA of other extensions. They can be extended by direct array manipulation or (preferred if possible) by calls to API functions.
Configuration/
Ts Config - Contains TSconfig configurations for the TYPO3 backend on page or user level in the syntax of TypoScript. This extension does not feature TSconfig, therefore the folder is only a placeholder here.
Configuration/
Typo Script - Contains TypoScript configurations for the frontend. In some contexts the configuration contained here is also considered in the backend.
Configuration/
Services. yaml - Is used to configure technical aspects of the extension including automatic wiring, automatic configuration and options for dependency injection. See also Services.yaml.
Directory Documentation
The folder Documentation
contains the files from which the
documentation is rendered. See Documentation.
Directory Resources
See also the general chapter on the folder Resources.
The folder Resources
contains two sub folders that are
further divided:
$ tree /path/to/extension/tea
├── Resources
├── Private
| ├── Language
| ├── Layouts
| ├── Partials
| └── Templates
└── Public
├── CSS
├── Icons
├── Images
└── JavaScript
Resources/
Private - All resource files that do not have to be loaded directly by a browser should go in this directory. This includes Fluid templating files and localization files.
Resources/
Public - All resource files have to be loaded directly by a browser must go in this directory. Otherwise they are not accessible depending on the setup of the installation.
Directory Tests
Contains the automatic tests. This topic is not covered by this tutorial.
Hint
If you want to learn more about automatic code checks see the documentation of tea and the chapter on Testing in this manual.