Module data object
The
\TYPO3\
object contains the user
specific module settings, for example whether the clipboard is shown,
for the requested module. Those settings
are fetched from the user's session. A PSR-15 middleware automatically
creates the object from the stored user data and attaches it to the PSR-7 Request.
The
\TYPO3\
object is available as
attribute of the PSR-7 Request - in case a TYPO3 backend module is requested -
and contains the stored module data, which might have been overwritten
through the current request (with
GET
/
POST
).
Through the module registration one can define, which properties can
be overwritten via
GET
/
POST
and their default value.
The whole determination is done before the requested route target - usually a backend controller - is called. This means, the route target can read the final module data.
The allowed properties are defined with their default value in the module registration:
'moduleData' => [
'allowedProperty' => '',
'anotherAllowedProperty' => true,
],
$MOD_SETTINGS = $request->getAttribute('moduleData');
The
Module
object provides the following methods:
Method | Parameters | Description |
---|---|---|
createFromModule() |
$module
$data | Create a new object for the given module, while
overwriting the default values with
$data . |
getModuleIdentifier() | Returns the related module identifier | |
get() |
$property
$default | Returns the value for
$property , or the
$default , if not set. |
set() |
$property
$value | Updates
$property with the given
$value . |
has() |
$property | Whether
$property exists. |
clean() |
$property
$allowed | Cleans a single property by the given allowed list and falls back to either the default value or the first allowed value. |
cleanUp() |
$allowed
$use | Cleans up all module data, which are defined in
the given allowed data list. Usually called with
$MOD_ in a controller with module menu. |
toArray() | Returns the module data as
array . |
In case a controller needs to store changed module data, this can still be done
using
$backend
.
Note
It is possible to store and retrieve arbitrary module data. The
definition of
module
in the module registration only defines,
which properties can be overwritten in a request (with
GET
/
POST
).
To restrict the values of module data properties, the given
Module
object can be cleaned, for example, in a controller:
$allowedValues = ['foo', 'bar'];
$this->moduleData->clean('property', $allowedValues);
If
Module
contains
property
, the value is checked
against the
$allowed
list. If the current value is valid,
nothing happens. Otherwise the value is either changed to the default
or if this value is also not allowed, to the first allowed value.