【发布时间】:2022-01-06 10:19:36
【问题描述】:
关于教义实体侦听器,我有一个非常奇怪的行为。我在一个 symfony 4.4 应用程序中设置了两个学说实体监听器。
service.yaml 中的配置如下所示:
services:
App\EntityListener\MyEntityListener:
tags:
- name: doctrine.orm.entity_listener
event: preUpdate
entity: App\Entity\MyEntity
我遇到了问题,实体侦听器在本地开发环境中完美运行,但在生产环境中却不行。我已将问题跟踪到 symfony 调试模式。如果 symfony 内核有debug=true,实体监听器会按预期调用。如果设置为 false,实体侦听器由于某种原因不会按原则附加到实体类元数据。我的第一个猜测是缓存使用问题,但如果清除缓存,问题仍然存在。此外,我没有任何依赖于 Kernel::isDebug() 的客户端代码。
有没有人知道这个问题可能起源于哪里,并且可以提示我解决这个问题的方向?
【问题讨论】:
-
也许在不同的环境中比较
bin/console debug:event-dispatcher会带来一些启示 -
如john所说,试试命令,不过加
--env=<dev|test|prod>看看有没有区别 -
@johnSmith 感谢您的建议,但 AFAIK 学说实体侦听器未通过 symfony 事件调度程序组件注册。无论是否启用调试模式,我都没有在列表中看到实体侦听器。
-
@zedling 环境设置不会改变行为,改变仅来自 APP_DEBUG。