Sylius Refund Plugin中重写LineItem实体的问题及解决方法
扩展Sylius Refund Plugin的LineItem实体添加code字段问题解决
背景
需要在Sylius Refund Plugin中扩展LineItem实体,新增code字段。已创建自定义实体及对应接口,最初在doctrine.yaml配置resolve_target_entities,并在services.yaml中指定类映射。
问题症状
- Doctrine可识别自定义实体,但执行
bin/console doctrine:migrations:diff时提示表已存在,需手动编写迁移添加code字段; - 运行时报错:
Call to undefined method Sylius\RefundPlugin\Entity\LineItem::setCode(),系统仍使用基础LineItem实例。
排查操作
已执行缓存清理、映射与架构验证、代理类检查等操作,确认原LineItem为MappedSuperclass,此前的配置方式无效。
解决方法
删除doctrine.yaml和services.yaml中的相关配置,在_sylius.yaml或sylius_resource.yaml中通过Sylius Resource配置实体映射:
sylius_resource: resources: sylius_refund.line_item: classes: model: App\Entity\SyliusRefundPlugin\LineItem interface: App\Entity\SyliusRefundPlugin\LineItemInterface
配置完成后,可通过bin/console debug:config sylius_resource命令验证配置有效性。
内容的提问来源于stack exchange,提问作者Yassine Belkedah
相关产品推荐
相关产品推荐

