【发布时间】:2022-01-23 14:12:07
【问题描述】:
我正在尝试对我的控制器的某些操作动态设置“tenant_id”过滤器。
我构建了一个扩展 SQLFilter 的类,并在 addFilterConstraint 中放入了执行此操作的逻辑。
问题在于动态“租户”参数:
如果我将这段代码放在我的每个控制器操作中,它就会起作用:
$em->getFilters()->getFilter('tenant')->setParameter('tenant_id', $security->getUser()->getTenant()->getId());
当然,这是不可维护的,所以我试图将这个逻辑移到其他地方,以使其更清晰,更易于维护。
我正在考虑类似事件,但是当Security 已经完成它的工作时,我需要在每个Request 上发送一个Event,然后我需要修改@987654328 @。
有什么想法吗?
谢谢
【问题讨论】:
-
您正在寻找一个事件订阅者:symfony.com/doc/current/… 例如,这可以在每个
onKernelRequest上运行.. -
我也发现了这个,但是我不知道如何访问EntityManager和Security,因为这些类只接收事件,我错了吗?
-
发表了一个答案.. 希望你能从那里得到一些工作..
标签: php symfony events filter doctrine