Другие типы данных
Флажок (Checkbox)
Поле-флажок может быть настроено так, чтобы по умолчанию было отмечено при создании нового объекта.
В базе данных значение хранится в колонке типа TINYINT со значением 0 или 1.
Чтобы программно установить значение флажка, передайте булево значение соответствующему сеттеру объекта:
$object->setCheckbox(true);
Если в соответствующем классе DataObject включено наследование (inheritance), рядом с флажком в интерфейсе администратора отображается иконка корзины. Она позволяет сбросить значение флажка, чтобы снова унаследовать значение от родительских объектов.
Логический выбор (Boolean Select)
A Boolean Select это нечто вроде флажка с тремя состояниями, который в интерфейсе админки отображается как выпадающий список (select).
Дело в том, что флажок может иметь только два состояния. Это особенно важно при наследовании: пустое (никогда не установленное) значение флажка трактуется как «не отмечено», и если родительский объект установил флажок в checked, то в дочернем объекте уже нельзя вернуть его в состояние unchecked.
Boolean Select решает эту проблему, вводя третье состояние. Значения при хранении: -1 — для «не отмечено», 1 — для «отмечено», null — для «пусто».
В админ-интерфейсе вы можете задать отображаемые метки по своему усмотрению; по умолчанию используются yes, no и empty.
Ссылка (Link)

В интерфейсе ссылка отображается как текст. Её параметры (путь, текст, заголовок и т. п.) можно редактировать нажатием на кнопку рядом с текстом ссылки. В определении класса объекта для поля типа «Link» специальных настроек нет.
Поле-ссылка использует свой класс данных: Pimcore\Model\DataObject\Data\Link. Чтобы программно установить ссылку, нужно создать объект этого класса и передать его в сеттер:
$l = new DataObject\Data\Link();
$l->setPath("http://www.pimcore.org");
$l->setText("pimcore.org");
$l->setTitle("Visit pimcore.org");
$object->setLink($l);
В базе данных ссылка хранится в колонке типа TEXT и содержит сериализованные данные объекта Pimcore\Model\DataObject\Data\Link.
Во внешнем интерфейсе (шаблоне) вы можете использовать следующий код для создания html-ссылки.
<?php
$object = DataObject::getById(234);
?>
<ul>
<li><?= $object->getMyLink()->getHtml(); ?></li>
</ul>
Генераторы ссылок (Link Generators)
См. также раздел о Link Generators
Цвет в формате RGBA (RGBA Color)
Позволяет хранить значения RGBA. Компоненты RGB и альфа-канал хранятся в базе как шестнадцатеричные значения в двух отдельных колонках.

Примеры API:
$o = \Pimcore\Model\DataObject\User::getById(50);
// получить цвет (объект), может быть null
$color = $o->getMyColor();
// получить RGB-часть в виде hex со знаком #
var_dump($color->getHex());
// получить RGBA-значение (с альфа), без ведущего #
var_dump($color->getHex(true, false));
// получить RGBA как массив (R,G,B 0-255, Alpha 0-1)
var_dump($color->getCssRgba(true, true));
// установить RGBA значение
$color->setRgba(0, 0, 255, 64);
Шифруемое поле (Encrypted Field)
Позволяет шифровать данные для определённых типов полей.

Требование: сгенерировать секретный ключ, выполнив vendor/bin/generate-defuse-key, и добавить его в конфигурацию config/config.yaml
Пример:
pimcore:
encryption:
secret: def00000fc1e34a17a03e2ef85329325b0736a5941633f8062f6b0a1a20f416751af119256bea0abf83ac33ef656b3fff087e1ce71fa6b8810d7f854fe2781f3fe4507f6
Генерация ключа:
Строгий режим (Strict Mode)
В строгом режиме (по умолчанию) при невозможности расшифровать существующие данные (например, при смене ключа) будет выброшено исключение. Вы можете отключить это, вызвав
Pimcore\Model\DataObject\ClassDefinition\Data\EncryptedField::setStrictMode(false)
URL Slug
Slug — это часть URL, которая идентифицирует конкретную страницу в человекочитаемом виде. Проще говоря, это часть адреса, объясняющая содержание страницы. Например, в URL https://demo.pimcore.fun/slug slug равен /slug.
Замечание: в настоящее время URL-slug не поддерживаются внутри Blocks Blocks и Classification Stores.
Этот тип данных можно использовать для управления кастомными URL-slug для объектов данных; в класс можно добавлять сколько угодно полей этого типа. Pimcore автоматически управляет маршрутизацией и вызовет настроенный контроллер/экшен, если slug соответствует запросу.
Для генерации slug можно использовать slugger из Symfony String component.
Важно: slug не может содержать символы
? #— они зарезервированы. Для получения дополнительной информации ознакомьтесь с RFC 3986.
Пример
<?php
namespace App\Controller;
use Pimcore\Controller\FrontendController;
use Pimcore\Model\DataObject;
use Symfony\Component\HttpFoundation\Request;
class ProductController extends FrontendController
{
public function slugAction(Request $request, DataObject\Foo $object, DataObject\Data\UrlSlug $urlSlug): array
{
// мы используем распознаватель параметров для сопоставленного объекта данных ($object).
// $urlSlug содержит контекстную информацию о слаге
return [
'product' => $object
];
}
}
Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.