You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ApiPlatform装饰序列化器服务出现循环引用报错如何解决?

问题根因

你自定义的ApiNormalizer实现了Symfony的NormalizerInterface接口,在默认服务自动配置规则下,所有实现该接口的类都会被自动注册为全局序列化器的普通器。同时该类实现了SerializerAwareInterface,容器会自动向其注入全局序列化器实例。
全局序列化器的初始化依赖所有已注册的普通器(包括你自定义的ApiNormalizer),而ApiNormalizer的初始化又依赖全局序列化器,由此形成循环引用。
之前运行正常是因为Symfony/API Platform版本升级后,服务加载顺序、自动配置的检测规则发生了变化,才触发了这个循环引用报错。

解决方案

修改services.yaml配置,给这个装饰器服务关闭自动配置即可——这个类本来就只用来装饰API Platform特定的JSON-LD item普通器,不需要被全局序列化器识别:

App\Serializer\ApiNormalizer:
    decorates: 'api_platform.jsonld.normalizer.item'
    # 新增以下配置
    autoconfigure: false

如果你的项目没有全局开启autowire,可以额外补充参数指定注入的装饰对象:

App\Serializer\ApiNormalizer:
    decorates: 'api_platform.jsonld.normalizer.item'
    arguments:
        $decorated: '@.inner'
    autoconfigure: false

验证

修改配置后执行php bin/console cache:clear清除缓存,报错就会消失,原有向序列化结果追加uuid的逻辑也完全不受影响。

内容的提问来源于stack exchange,提问作者Jack Skeletron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 21:09:04