Dot Notation for Field Definitions
The Studio Backend uses dot notation to resolve field definitions within complex data object structures. Examples using the Car object:
carClassGet the Standard fields.localizedfields.nameGet Localized Fieldsattributes.Bodywork.numberOfDoorsGet Field from a Brick
More complex examples using the News object:
content.NewsCars.relatedCarsGet Field from Field Collectioncontent.NewsCars.localizedfields.titleGet Localized Field from Field Collectioncontent.NewsLinks.links.linkGet Field from a Block in a Field Collection
Custom Data Types
When you have custom Container Data Type and would like to support the Dot Notation you can implement your own Resolver.
You need to Extend Pimcore\Bundle\StudioBackendBundle\FieldDefinition\Parser\Resolver\AbstractResolver
Here is a simple Example:
<?php
declare(strict_types=1);
namespace App\Resolver;
use Pimcore\Bundle\StudioBackendBundle\Exception\ParseException;
use Pimcore\Bundle\StudioBackendBundle\FieldDefinition\FieldDefinitionWrapper;
/**
* @internal
*/
final class DefaultResolver extends AbstractResolver
{
public function getResolverName(): string
{
return 'my_resolver';
}
public function canResolve(array $dotNotationParts): bool
{
if (count($dotNotationParts) === 1) {
return true;
}
return false;
}
public function resolve(array $dotNotationParts): FieldDefinitionWrapper
{
$key = $dotNotationParts[0];
return $this->wrapFieldDefinition(
fieldDefinition: $this->getFieldDefinition($key),
containerType: 'my_container',
fieldname: $key,
);
}
}