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

Другие типы данных

Флажок (Checkbox)

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.

Boolean Select

Поле 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

Цвет в формате 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)

Позволяет шифровать данные для определённых типов полей.

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

Замечание: в настоящее время 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
];
}
}


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