Исправление устаревания symfony2.8 повлияет на мою базу данных

Мне нужно исправить устаревание;

Значение «false» для опции «выборы_как_значения» типа формы «выбор» (Symfony\Component\Form\Extension\Core\Type\ChoiceType) устарело, начиная с версии 2.8, и больше не будет поддерживаться в 3.0. Установите для этого параметра значение «true» и вместо этого переверните содержимое параметра «выборы».

Я полностью понимаю, как исправить это устаревание, но переворачивание содержимого моего выбора вызовет конфликты с моей базой данных.

Например;

У меня есть автомобильный стол с полем для трансмиссии. В этом поле всегда будет либо a, либо m

В моем проекте у меня есть функция, которая возвращает массив;

public static function enumFootType()
{
    return array(
        'a' => 'Automatic',
        'm' => 'Manual'
    );
}

Так что в моей форме он будет отображать Automatic, но в моей базе данных он хранится как a. Так что, если я собираюсь перевернуть весь контент, как говорит мне сообщение об устаревании, у меня возникнут конфликты в моей базе данных. Как мне это исправить? Может кто-нибудь, пожалуйста, помогите мне?

Я все еще новичок в Symfony и т. д., поэтому я надеюсь, что вы понимаете, что я пытаюсь объяснить. Спасибо


person Community    schedule 29.02.2016    source источник
comment
Ты это пробовал? Все, что вам нужно сделать, это перевернуть массив, и все должно работать точно так же, как и раньше. Нет необходимости в вариантах selection_as_values ​​и т. д.   -  person Cerad    schedule 29.02.2016
comment
@Cerad Я поменял местами один массив, чтобы проверить его, и вот что сейчас показывает ошибка; Key "0" for array with keys "no, yes" does not exist in src/FcConnectBundle/Resources/views/Consult/show.html.twig at line 502   -  person    schedule 29.02.2016


Ответы (2)


Вы можете передать массив объектов и использовать метод получения меток:

$builder->add('attending', ChoiceType::class, array(
    /** Type $types */
    'choices' => $types,
    'choices_as_values' => true,
    'choice_label' => 'getName',
    'choice_value' => 'getName'
));
person Anna Adamchuk    schedule 29.02.2016

В конструкторе форм добавьте свойство 'choices_as_values' => true и переключите ключ и значение на вкладке. Он должен работать.

Дополнительная информация: http://symfony.com/blog/new-in-symfony-2-7-choice-form-type-refactorization

person Thlbaut    schedule 29.02.2016
comment
Я сказал, что знаю, как это исправить. Я знаю, что должен добавить это свойство и переключить ключ и значение. Но мой выбор исходит из функции (как объяснено в моем вопросе) из объекта, куда он отправляется из базы данных. Поэтому, если я их поменяю местами, возникнут проблемы с получением правильной информации из базы данных. - person ; 29.02.2016