【发布时间】:2016-01-13 22:10:33
【问题描述】:
我正在运行 Symfony 2.7,我正在尝试将对象(Doctrine 实体)输出为 JSON。
当我规范化对象时,我想转换它的一些值。为此,我在the documentation 中找到了“setCallbacks”方法,但我对如何将其应用到我的案例中感到有些困惑。
有什么方法可以在调用 Symfonys 序列化服务时设置的规范化器上调用“setCallbacks”方法?
这是我想要实现的一个简短示例:
//ExampleController.php
public function getJSONOrderByIdAction($id) {
$serializer = $this->get('serializer');
$normalizer = $serializer->getNormalizer(); // <- This is what I'm unable to do
$dateTimeToString = function ($dateTime) {
return $dateTime instanceof \DateTime ? $dateTime->format(\DateTime::ISO8601) : '';
};
$normalizer->setCallbacks(['time' => $dateTimeToString]);
$order = $this->getDoctrine()->find("AppBundle:Order", $id);
return new JsonResponse(["order" => $serializer->normalize($order, null, ["groups" => ["public"]])]);
}
我知道大多数人已经切换到 JMS 序列化程序。似乎内置的序列化程序应该能够处理我想要实现的目标。
【问题讨论】:
标签: php symfony serialization