@aassdds
Люблю борщ и PHP

Как в symfony 3 создать Choice в Entity?

День добрый
Мучаю Symfony, а она меня
Суть проблемы: нужно создать форму с выбором (select) из 2 вариантов
Вопрос: можно ли указать все валидные 2 варианта в Entity ?
Я до этого работал с Django - и там варианты выбора можно было сделать прямо при объявлении поля...
Что то мне подсказывает что в симфони можно сделать так же...

Сейчас в Entity вот так :

use Symfony\Component\Validator\Constraints as Assert;


    /**
     * @var int
     *
     * @Assert\Choice( choices = {1:"male", 2:"female"}, message = "Choose a valid priority.")
     */
    protected $priority;


- но при doctrine:schema:update --force - в базе не появляется никакого поля, да и как я понимаю - не должно, так как нигде нет имени поля...
Подскажите как сделать нормальный, красивый choice
  • Вопрос задан
  • 542 просмотра
Пригласить эксперта
Ответы на вопрос 2
kylt_lichnosti
@kylt_lichnosti
Choice надо в форме создавать, а не в сущности.
"@Assert" относится к валидации формы.
Ответ написан
Комментировать
myrkoxx
@myrkoxx
developer
Прямо с Entity наверно никак. Формы - другой компенент системы. Если надо сделать вам форму используя стандартный компонент форм в Symfony то вам нужно описать класс формы с ChoiceType .
Вот офф. документация:

symfony.com/doc/current/reference/forms/types/choi...

" но при doctrine:schema:update --force - в базе не появляется никакого поля" - как подметили више assert - относиться к компоненту валидации, собственно потому доктрина ничего не делает.
Если хотите чтоб поля создавались в базе как enum то ето как то так:
/** @Entity */
class Article
{
    /** @Column(type="string", columnDefinition="ENUM('visible', 'invisible')") */
    private $status;
}


Вот офф. дока:
docs.doctrine-project.org/projects/doctrine-orm/en...

А еще лучше использовать вместо doctrine:schema:update - DoctrineMigrationsBundle:
symfony.com/doc/current/bundles/DoctrineMigrations...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы