2015-03-30 2 views
3

У меня есть объект doctrine, содержащий поля DateTime. Когда я сериализовать объект, который будет использоваться формами, я трансформировать объекты даты-времени, используя эту функцию обратного вызова (взятую из Symfony): documentationSymfony2 unserialize для создания учения Entity с DateTime с использованием serializer

$callback = function ($dateTime) { 
    return $dateTime instanceof \DateTime 
     ? $dateTime->format(\DateTime::ISO8601) 
     : ''; 

эта функции присоединенная к нормализатору.

Дата также преобразуется в строку с использованием изображения dd/MM/yyyy и помещается в форму в виде строки (я использую дату datepicker JavaScript).

Форма отправляется с использованием ajax в контроллер, который получает объект как массив PHP.

Теперь мне нужно преобразовать массив (содержащий эту дату в виде строки) обратно в мой объект Doctrine.

Есть ли способ десериализации массива в Entity? Я пытался использовать deserialize(json_encode($array)), но получаю ошибку при преобразовании DateTime.

любая подсказка?

+0

Вы пытались использовать Data Transformer в своей форме? (Http://symfony.com/doc/current/cookbook/form/data_transformers.html) – angelwally

ответ

0

Я думаю, что самый Recommand способ сделать что-то подобное, что с помощью Symfony2 DateTime FormType

Может выглядеть:

 $builder->add(
      'date', 
      'datetime', 
      array(
       'widget' => 'single_text', 
       'format' => 'dd/MM/yyyy' 
      ) 
     ); 

Если вам не нравится использовать компонент формы, я не знаю, простой способ сопоставить массив с сущностью.

 Смежные вопросы

  • Нет связанных вопросов^_^