Варианты объекта
Лучший способ показать использование и функциональные возможности вариантов объектов - это пример использования:
Ваша цель - хранить в Pimcore большое количество товаров. Многие из этих товаров являются вариантами друг друга, например, желтая футболка, синяя футболка, красная футболка и т.д. Большинство атрибутов футболок имеют одинаковые значения и отличаются только цветом и кодом EAN.
Один из способов добиться этого - создать универсальный объект t-shirt, а затем создать для каждого варианта дочерний объект в дереве, который наследует большинство атрибутов и устанавливает только те, которые отличаются. Этот подход прекрасно работает, но если у вас есть десятки или даже сотни вариантов, ваше дерево объектов становится довольно большим и запутанным.
Именно здесь появляются варианты объектов. По сути, это просто объекты, которые вы можете настроить так, чтобы они не отображались в дереве объектов. В дереве вы просто создаете общую футболку. Для каждого варианта этой футболки вы создаете вариант объекта. Хотя вы можете выбрать варианты, которые не будут отображаться в дереве, вы, тем не менее, сможете редактировать их на отдельной вкладке в редакторе объектов.
Единственное различие между объектами и вариантами в поведении заключается в том, что вы не можете добавить объект другого класса ниже варианта.
Таким образом, вы можете создавать сотни вариантов объектов, не разрушая дерево объектов.

Как и обычная объектная сетка, таблица вариантов объектов поддерживает разбиение по страницам, фильтрацию, скрытие столбцов и визуализацию унаследованных значений. Таким образом, даже большое количество вариантов должно быть управляемым.
Создание и упорядочивание вариантов объектов
Чтобы использовать варианты объектов, они должны быть сначала активированы в определении класса. Варианты объектов имеют смысл только в том случае, если активировано наследование. Следовательно, наследование является обязательным требованием для вариантов объектов.

После их активации в редакторе объектов появляется дополнительная вкладка 'Variants'. Здесь все варианты текущего объекта отображаются в виде таблицы. С помощью кнопок можно создавать, открывать и удалять варианты объектов.

Чтобы создать варианты объектов с помощью кода, просто создайте обычный объект, установите в качестве родительского элемента универсальную футболку и задайте тип объекта DataObject::OBJECT_TYPE_VARIANT.
$objectX = new DataObject\Product();
$objectX->setParent(DataObject\Product::getById(362603));
$objectX->setKey("variantname");
$objectX->setColor("black");
$objectX->setType(DataObject::OBJECT_TYPE_VARIANT);
$objectX->save();
Полечение вариантов объекта
Получить все варианты объекта
Получить все варианты объекта довольно просто. Просто вызовите getChildren и передайте нужные типы объектов в виде массива.
Если должны быть возвращены только варианты, используйте следующую строку.
$objectX->getChildren([DataObject::OBJECT_TYPE_VARIANT]);
По умолчанию getChildren предоставляет объекты, варианты и папки.
Варианты объектов в списках объектов
Аналогично getChildren, объекты списка объектов теперь имеют свойство object type, которое определяет типы объектов для
доставки. По умолчанию доставляются объекты, варианты и папки. Чтобы предоставить варианты объектов, используйте один из следующих
фрагментов кода:
$list = new DataObject\Product\Listing();
$list->setObjectTypes([DataObject::OBJECT_TYPE_VARIANT]);
$list->load();
// or
DataObject\Product::getList([
"objectTypes" => [DataObject::OBJECT_TYPE_VARIANT]
]);
Если вам нужны обычные объекты и варианты, вы должны использовать:
$list = new DataObject\Product\Listing();
$list->setObjectTypes([DataObject::OBJECT_TYPE_VARIANT,DataObject::OBJECT_TYPE_OBJECT]);
$list->load();
Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.