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

Опции выбора (Select Options)

Опции выбора (Select options) — это предопределённые наборы опций, которые могут использоваться для полей select и multiselect.

Конфигурация Select options

Колонка «Name» необязательна, за исключением случаев, когда значение нельзя преобразовать в допустимый case PHP‑enum. Это касается значений, начинающихся с цифры или с некоторых символов. Имя опции может содержать только буквенно‑цифровые символы и символ подчёркивания.

Конфигурация поля

В настройках поля установите источник опций (options source) как «Select Options» и выберите один из наборов Select Options, созданных в админке.

Конфигурация Select options

Работа через PHP API

Ниже показано, как Pimcore генерирует поддерживаемый enum на основе конфигурации набора опций.

<?php  

namespace Pimcore\Model\DataObject\SelectOptions;

enum TestOptions: string implements \App\SelectOptions\DataInterface, \App\SelectOptions\NameInterface
{
use \Pimcore\Model\DataObject\SelectOptions\Traits\EnumGetValuesTrait;
use \Pimcore\Model\DataObject\SelectOptions\Traits\EnumTryFromNullableTrait;
use \App\SelectOptions\DataTrait;
use \App\SelectOptions\NameTrait;

case Ten = 'ten';
case Twenty = '20';
case Check = '√';
case C = '©';
case Multiple_Word_Value = 'Multiple Word Value';

public function getLabel(): string
{
return match ($this) {
self::Ten => '10',
self::Twenty => 'Twenty',
self::Check => '√',
self::C => '©',
self::Multiple_Word_Value => 'Multiple Word Value',
};
}
}

Получение доступных значений опций

Метод, предоставляемый EnumGetValuesTrait.

TestOptions::getValues();  

Преобразование значения select в enum

Метод, предоставляемый EnumTryFromNullableTrait.

$value = $product->getSelectField();  
$testOption = TestOptions::tryFromNullable($value);
if ($testOption !== null) {
$label = $testOption->getLabel();
}


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