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.