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

Структурированная таблица

Добавление структурированной таблицы в класс

Аналогично виджету Table, Structured Table может хранить структурированные данные. При этом есть несколько принципиальных отличий.

  • Строки и столбцы заранее определены и имеют имена.
  • Для каждого столбца можно задать тип данных. Возможные типы: text, number и boolean.
  • Данные структурированной таблицы доступны через геттеры и сеттеры и хранятся в базе данных в структурированном виде.

Вы можете добавить компонент Structured Table в определение класса:

Добавление структурированной таблицы в класс

Для того чтобы определить таблицу, необходимо указать заголовки строк и столбцов, которые будут использоваться для заполнения содержимого структурированной таблицы.

Определение Structured table

После этого вы сможете использовать таблицу в объекте:

Редактирование объекта со структурированной таблицей

Хранение данных Structured Table

Для каждой комбинации строки и столбца будет создана отдельная колонка в таблице базы данных того класса, в котором используется Structured Table.

Поэтому этот тип структурирования данных не подходит для случаев с большим количеством строк или столбцов: число создаваемых колонок может стать проблемой. При проектировании класса следует учитывать максимально возможное количество колонок, так как это может представлять техническое ограничение.

Использование Structured Table через PHP API

В коде данные этого поля доступны как объект типа StructuredTable. Примеры использования:

/** @var \Pimcore\Model\DataObject\Data\StructuredTable $structuredData */  
$structuredData = $object->getAdditionalinfo();

//Возвращает ассоциативный массив для строки 'CommunityEdition' со всеми столбцами
$structuredData->getCommunityedition();

//Возвращает ассоциативный массив для строки 'CommunityEdition' со всеми столбцами
$structuredData->getCommunityedition__support();

//Устанавливает значение в ячейке
$structuredData->setCommunityedition__support("Forum");

//Другой способ установки данных в структурированную таблицу
$data = [];
$data['communityedition']['opensource'] = true;
$structuredData->setData($data);


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