Symfony - 在发送到

时间:2017-03-29 11:56:22

标签: php json symfony doctrine-orm

嗨!

我希望在将数据发送到视图之前对其进行转换。视图是使用FOSRestBundle的json响应。

例如,我有一个具有字段Category的Product实体,它是对Category Entity的引用。在输出中,我不想显示整个类别的json,而只显示其ID字段。

当然,您可以进一步处理Controller中的实体,只返回该类别中的特定字段,但是..

我想问一下,如果有任何“标准”解决方案怎么做,可能使用注释?

谢谢

1 个答案:

答案 0 :(得分:2)

我认为实现你想要的最佳实践或标准方法(在返回JSON之前过滤/处理实体数据),就是利用序列化器。您可以考虑使用 Symfony Serializer Bundle http://symfony.com/doc/current/components/serializer.html JMS Serializer http://jmsyst.com/libs/serializer

我自己推荐 JMS 一个,它有非常好的文档,定义完全通过注释控制,一个经过深思熟虑的事件系统和一些我可以列出的功能如下:

- 公开/排除特定的实体属性。

- 为实体转换为JSON后创建虚拟属性(属性)。 (例如,如果您有具有属性Price的实体产品,并且您希望在JSON对象中调用taxPrice中的计算字段,则可以实现它。)

- 访问控制谁可以通过将属性分类到不同的组来访问哪些属性/实体。

- 预序列化和后序列化事件,因此您可以进一步调整数据。

我可以说Serializer与Forest Bundle一起工作得很好,一旦你习惯了它,你很难以不同的方式编写你的项目:D。