Перейти к основному содержимому

Добавление типов данных для объектов

С помощью бандлов (плагинов) в Pimcore можно добавлять индивидуальные типы данных для объектов. Для этого необходимо выполнить следующие шаги:

  1. Создайте 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


Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.