嗨!
我希望在将数据发送到视图之前对其进行转换。视图是使用FOSRestBundle的json响应。
例如,我有一个具有字段Category的Product实体,它是对Category Entity的引用。在输出中,我不想显示整个类别的json,而只显示其ID字段。
当然,您可以进一步处理Controller中的实体,只返回该类别中的特定字段,但是..
我想问一下,如果有任何“标准”解决方案怎么做,可能使用注释?
谢谢
答案 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。