嗨!
我想在将数据发送到视图之前对其进行转换。该视图是使用 FOSRestBundle 的 json 响应。
例如,我有一个带有字段"类别"的产品实体,该实体是对"类别实体"的引用。在输出上,我不想显示整个类别的 json,而只显示其 ID 字段。
当然,您可以进一步处理控制器中的实体以仅返回类别中的特定字段,但是..
我想问一下,如果有任何"标准"解决方案如何做到这一点,也许使用注释?
谢谢
我认为实现您想要的最佳实践或标准方法是使用序列化程序(在作为 JSON 返回之前过滤/处理实体数据以供查看)。您可以考虑使用SymfonySerializer Bundle:http://symfony.com/doc/current/components/serializer.html 或JMS Serializer:http://jmsyst.com/libs/serializer。
我自己推荐JMS,它有非常好的文档,定义完全通过注释控制,还有一个经过深思熟虑的事件系统和一些功能,我可以列出如下:
-- 公开/排除特定实体属性。
-- 在实体转换为 JSON 后为其创建虚拟属性(属性)。(例如,如果您有具有属性价格的实体产品,并且希望在 JSON 对象调用 taxPrice 中有一个计算字段,则可以实现它)。
-- 访问控制谁可以访问哪些属性/实体,方法是将属性分类到不同的组。
-- 预序列化和后序列化事件,以便您可以进一步调整数据。
我可以说 Serializer 与 Forest Bundle 配合得很好,一旦你习惯了它,你就很难用不同的方式编写你的项目:D。