2014-07-08 3 views
1

У меня есть Entity со стандартным полем данных, которое я обслуживаю через интерфейс REST, реализованный с использованием FOSRestbundle.Doctrine2 + FOSRestbundle, значение формата перед сериализацией

В соответствии с стандартными настройками эта дата сериализуется как строка, например. "2014-07-05T09: 53: 45 + 0200".

Вместо этого я бы хотел, чтобы он служил отметкой времени Unix (т. Е. С помощью стандартной функции getTimeStamp() класса PHP DateTime). Однако я понял, что либо Doctrine2, либо Serializer никогда не будут обращаться к этому полю через его геттер. Таким образом, это ничего не меняет вообще, если я следующий в моем определении Entity:

public function getDate() { 
    return $this->date->getTimestamp(); 
} 

кроме ручной настройки этого поля в возвращенном зрения REST, что было бы хорошим способом, чтобы сделать соответствующее преобразование перед подачей для клиента?

ответ

2

Если вы используете JMSSerializer, используйте аннотацию @Accessor.

class MyClass 
{ 
    /* 
    * @JMS\Accessor(getter="getTimestampDateTime") 
    */ 
    private $datetime; 

    public function getDatetime() 
    { 
     return $this->datetime; 
    } 

    public function getTimestampDateTime() 
    { 
     return $this->getDatetime()->getTimestamp(); 
    } 
} 

Если вы хотите, чтобы заставить сериалайзер пользоваться общественным получить/установить, используйте @AccessType аннотацию.

0

Я не уверен, если @Type аннотаций были доступны в 2014 году,

Но теперь, если вам нужно сделать DateTime свойства сериализованного в Отметки времени Unix:

/** 
* @JMS\Type("DateTime<'U'>") 
*/ 
private $toTimestamp; 
Смежные вопросы