Как правильно передать ассоциатиный массив в ChoiceType в Symfony5

Пробую создать select посредством ChoiceType:

$builder->add('category', Type\ChoiceType::class, [
            'choices' => ['option1'=> 'value1', 'option2' => 'value2', 'option3' => 'value3'],
            'choice_label' => function ($choice, $key, $value) {
                return $key;
            },
            'choice_value' => function ($value) {
                if (! is_array($value)) {
                    return $value;
                }
            }
        ]);

Если упускать choice_label, choice_value то будет Notice: Array to string conversion

$builder->add('category', Type\ChoiceType::class, [
            'choices' => ['option1'=> 'value1', 'option2' => 'value2', 'option3' => 'value3']
        ]);

Я начал смотреть через XDebug что прилетает в анонимную функцию.

Оказалось что 3 раза туда прилетают все 3 значение из массива choices (value1, value2, value3), а в 4ый раз (что сбивает с толку) весь массив.

Не совсем понятно зачем это? Почему после перевора всех значений массива прилетает сам массив?

Возможно есть более элегантный способ отображения select из ассоциативного массива чем в примере выше?


Ответы (0 шт):