gpt4 book ai didi

symfony - 在 Symfony2 中的每个请求上为 Doctrine 过滤器设置参数

转载 作者:行者123 更新时间:2023-12-01 00:43:28 25 4
gpt4 key购买 nike

我在 Symfony2 项目中有一个 Doctrine 过滤器。我试图在每个请求上将过滤器的参数设置为某个值(从 session 中获取)。问题是过滤器对象是在 Symfony 的 onKernelRequest 事件之后创建的,所以我不能从那里设置它。如果我尝试在 Doctrine 的 postConnect 事件中设置它,则检测到循环依赖:

ServiceCircularReferenceException: Circular reference detected for service "doctrine.orm.private_entity_manager", path: "routing.loader -> assetic.asset_manager -> twig -> translator.default -> doctrine.orm.private_entity_manager -> doctrine.dbal.private_connection -> year_visibility.parameter_setter".

问题是,我应该在哪里(或如何)设置过滤器的参数?

最佳答案

您可以尝试手动定义过滤器并同时传递所需的参数。

services:
app.filter_manager:
class: App\Bundle\AppBundle\Filter\FilterManager
arguments: [@doctrine.orm.entity_manager, @session]
tags:
- { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }

在过滤器管理器类中:

// ...

public function __construct(EntityManager $em, SessionInterface $session)
{
$this->em = $em;
$this->session = $session;
}

// ...

public function onKernelRequest()
{
$this->em->getConfiguration()->addFilter('filter_name', 'Filter/Class/Name/With/Ns');

$filter = $this->em->getFilters()->enable('filter_name');
$filter->setParameter('param_name', $this->session->get('param_name'));
}

关于symfony - 在 Symfony2 中的每个请求上为 Doctrine 过滤器设置参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15722566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com