TYPO3 v9 has reached its end-of-life September 30th, 2021 and is not maintained by the community anymore. Looking for a stable version? Use the version switch on the top left.
You can order Extended Long Term Support (ELTS) here: TYPO3 ELTS.
Extbase provides a Property Mapper to convert different values, like integers or arrays, to other types, like strings or object. In this example, we provide a string that will be converted to an integer:
$output = $this->objectManager->get(\TYPO3\CMS\Extbase\Property\PropertyMapper::class) ->convert('10', 'integer');
Conversion is done by using the
How to Use a Property Mapper¶
The above example was a really simple one. Most of the time you will convert from an array to an where some points must be considered. This example will show a simple conversion:
$input = [ 'username' => 'This is the user name', ]; $output = $this->objectManager->get(\TYPO3\CMS\Extbase\Property\PropertyMapper::class) ->convert( $input, 'TYPO3\CMS\Extbase\Domain\Model\FrontendUser' );
The result will be a new instance of
with defined property
The property mapper won't check validation rules. The result will be whatever the input is.
Allow Mapping of Sub-properties¶
It's also possible to map to subtypes. In the above example, the
FrontendUser has a sub-property
TYPO3\CMS\Extbase\Domain\Model\FrontendUserGroup. If you wanna map an incoming id,
you have to configure the mapper as per default he won't map sub properties for security reasons:
$input = [ 'username' => 'This is the user name', 'usergroup' => [ 1, ], ]; // Get property mapping configuration $mappingConfiguration = $this->objectManager ->get('TYPO3\CMS\Extbase\Property\PropertyMappingConfigurationBuilder') ->build(); // Adjust configuration to allow mapping of sub property 'usergroup' $mappingConfiguration->forProperty('usergroup') ->allowAllProperties(); $output = $this->objectManager->get(\TYPO3\CMS\Extbase\Property\PropertyMapper::class) ->convert( $input, 'TYPO3\CMS\Extbase\Domain\Model\FrontendUser', $mappingConfiguration );