Скрытый тип Symfony для объекта DateTime

#symfony #symfony-forms

#симфония #symfony-forms

Вопрос:

У меня есть простая форма

    ->add('createDateTime', HiddenType::class)
 

Вызывает ошибку:

Объект класса DateTime не удалось преобразовать в строку

Как мне обойти эту проблему? Я не хочу изменять сущность, чтобы возвращать дату в формате строки…

Есть идеи?

Ответ №1:

Поскольку для формы inputs требуется текстовое представление данных, вам нужно преобразовать значение в строку с помощью a DataTransformer . К счастью, Symfony поставляется с преобразователем для DateTime объектов, вам просто нужно добавить его в поле формы:

 $builder
    ->add('field') //...
    ->add('createDateTime', HiddenType::class);

$builder
    ->get('createDateTime')
    ->addModelTransformer(new DateTimeToStringTransformer());
 

При необходимости вы можете указать разные часовые пояса для преобразования или форматирования.