在我的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);
我不知道是否需要请求中的一些参数,但您可以添加(请参阅文档)。
希望这个帮助