如何在没有请求的情况下调度Symfony事件


how to dispatch symfony event without request

在我的symfony项目中,我为cron task创建了一个命令(一天运行一次)。它更改了一个表,并且该表已按属性更新(通过可责备的侦听器)。所以我必须以编程方式登录用户。这是我的代码。

if ($this->container->get("security.context")->getToken() === null) {
      $token = new UsernamePasswordToken($systemUser, null, "admin_area", $systemUser->getRoles());
      $this->container->get("security.context")->setToken($token);
}

我的问题是如何调度此事件。因为没有请求,我不能使用以下代码。

$request = $this->container->get("request");
        $event = new InteractiveLoginEvent($request, $token);
        $this->container->get("event_dispatcher")->dispatch("security.interactive_login", $event);

get("request")服务也不能在命令中使用。请帮我调度这个事件。

-您可以通过 create 方法创建一个请求对象,例如:

$request = Request::create("?foo=bar");

然后在以下事件中使用它:

    $event = new InteractiveLoginEvent($request, $token);

我不知道是否需要请求中的一些参数,但您可以添加(请参阅文档)。

希望这个帮助