Symfony Множественный выбор в поле сущности

Я пытаюсь сделать поле статуса в своей сущности с множественным выбором. Я хочу, чтобы у этого пользователя было три варианта статуса: «сделать», «готово» и «проверить». какой тип доктрины лучший? как я могу это сделать, чтобы отобразить значения на выбранном входе? Спасибо.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
1
0
560
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Используйте ChoiceType:

    $form->add('state',ChoiceType::class,[
        'choices' => [
            0 => 'to do',
            1 => 'done',
            2 => 'to review',
        ]
    ])

Подробнее в документации Symfony: https://symfony.com/doc/current/reference/forms/types/choice.html

Ответ принят как подходящий

Правильное использование ChoiceType - предоставить массив вариантов, где ключ массива - это метка элемента, а значение массива - это значение элемента:

$form->add('state',ChoiceType::class,[
    'choices' => [
        'To do' => 'to do',
        'Done' => 'done',
        'To review' => 'to review',
    ]
]);

Внутри вашего класса сущности ваше поле будет простым строковым полем:

/**
 * @ORM\Column(type = "string", length=50)
 */
 private $status;

Вы можете пойти дальше, используя Mysql Enums, поскольку есть только три возможных значения, но я считаю, что это ненужные накладные расходы, потому что при создании объекта через форму Symfony будет принимать только эти три значения в качестве возможных значений. Наконец, вы также можете добавить некоторую проверку, чтобы убедиться, что это поле всегда содержит допустимое значение.

Спасибо за Ваш ответ. Но как я могу объявить поле в своем классе сущности с помощью аннотации orm? Это будет простое строковое поле или массив ....!?

Delmed 17.12.2018 20:01

Другие вопросы по теме