gpt4 book ai didi

symfony - 在 Symfony 2 的监听器中访问数据库

转载 作者:行者123 更新时间:2023-12-04 02:37:03 24 4
gpt4 key购买 nike

我们需要在监听器中访问数据库信息。
我们在 service.yml 中配置监听器
听众是这样的:

namespace company\MyBundle\Listener;

use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpKernel\HttpKernelInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class RequestListener
{
protected $container;

public function __construct(ContainerInterface $container)
{
$this->container = $container;
}

public function onKernelRequest(GetResponseEvent $event)
{
...

我们如何在 onKernelRequest 函数中访问学说?

我尝试从 Controller 扩展并执行以下操作:
        $em = $this->getDoctrine()->getEntityManager(); 

它有效,但我认为这是一种不好的做法。

最佳答案

您可以只注入(inject)服务容器。首先更改构造函数以获取EntityManager:

use Doctrine\ORM\EntityManager;

class RequestListener {
protected $em;
function __construct(EntityManager $em)
{
$this->em = $em;
}
//...
}

接下来配置您的服务:
#...
services:
foo.requestlistener:
class: %foo.requestlistener.class%
arguments:
- @doctrine.orm.entity_manager

关于symfony - 在 Symfony 2 的监听器中访问数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8823560/

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