Добавление типов данных для объектов
С помощью бандлов (плагинов) в Pimcore можно добавлять индивидуальные типы данных для объектов. Для этого необходимо выполнить следующие шаги:
- Создайте PHP-класс для реализации на стороне сервера:
Этот класс должен наследоваться от
Pimcore\Model\DataObject\ClassDefinition\Data. Он определяет, как тип данных сохраняется в базе данных, как генерируются геттеры и сеттеры для объектов Pimcore и как данные отправляются и читаются из Pimcore Admin UI.
В качестве примера вы можете изучить стандартные типы данных ядра Pimcore на GitHub. 2. Создайте JavaScript-класс для редактора определений классов (Class Definition): Этот JS-класс отвечает за представление типа данных в редакторе классов. Он определяет где разрешено использовать поле (объекты, ObjectBricks, FieldCollections, LocalizedFields), группу, название (label), иконку и настройки конфигурации в редакторе классов.
Класс должен наследоваться от pimcore.object.classes.data.data, находиться в пространстве имен pimcore.object.classes.data и называться так же, как
свойство $fieldtype соответствующего класса PHP.
Для примеров взгляните на стандартные типы данных Pimcore на GitHub 3. Создайте JavaScript-класс для редактора объектов (Object Editor) Этот класс JavaScript определяет представление типа данных в редакторе объектов и, следовательно, определяет, как данные представляются и могут быть введены в объекты Pimcore.
Класс должен наследоваться от pimcore.object.tags.abstract, находиться в пространстве имен pimcore.object.tags и называться так же,
как свойство $fieldtype PHP-класса.
Для примеров взгляните на стандартные типы данных Pimcore на
GitHub
4. Зарегистрируйте тип данных в Pimcore
Чтобы Pimcore «увидел» новый тип данных, его нужно добавить в конфигурацию pimcore.objects.class_definitions.data.map.
Это можно сделать в любом загружаемом конфигурационном файле (например, config/config.yaml). Если вы поставляете тип данных в составе бандла, определение следует разместить в конфигурационном файле, который загружается автоматически вместе с бандлом.
Пример:
# config/config.yaml
pimcore:
objects:
class_definitions:
data:
map:
myDataType: \App\Model\DataObject\Data\MyDataType
Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.