在 symfony 事件订阅者中获取调用的上下文
Get the context of call in symfony event subscriber
我有事件订阅者,它正在监听学说事件:
return [
Events::postPersist,
Events::postUpdate,
Events::postRemove,
];
它工作正常,但我需要的是在特定的应用程序操作(从命令调用)中禁用此事件以触发订阅者。
我的想法是 以某种方式 检测从哪个范围调用了 flush(),有没有像 debug_backrace() 这样的方法(我不想使用 obv。)来检测上下文应用程序?
您可以尝试一件事:向您的订阅者添加一个标志,以便您可以启用或禁用您的订阅者,例如:
private $isEnabled = true;
public function disableSubscriber(): void {
$this->isEnabled = false;
}
在你处理东西的每个方法中,你检查那个标志 - 它是 false
,然后不要做任何你会做的事情。
之后,您可以将订户注入其他服务,就像任何其他服务一样。在您希望通过该订户禁用处理的命令中,调用 $subscriber->disableSubscriber();
即可完成
我有事件订阅者,它正在监听学说事件:
return [
Events::postPersist,
Events::postUpdate,
Events::postRemove,
];
它工作正常,但我需要的是在特定的应用程序操作(从命令调用)中禁用此事件以触发订阅者。 我的想法是 以某种方式 检测从哪个范围调用了 flush(),有没有像 debug_backrace() 这样的方法(我不想使用 obv。)来检测上下文应用程序?
您可以尝试一件事:向您的订阅者添加一个标志,以便您可以启用或禁用您的订阅者,例如:
private $isEnabled = true;
public function disableSubscriber(): void {
$this->isEnabled = false;
}
在你处理东西的每个方法中,你检查那个标志 - 它是 false
,然后不要做任何你会做的事情。
之后,您可以将订户注入其他服务,就像任何其他服务一样。在您希望通过该订户禁用处理的命令中,调用 $subscriber->disableSubscriber();
即可完成