我目前正在使用 Symfony2 事件侦听器根据用户身份验证状态将控制器更改为不同的控制器。我让侦听器设置新控制器,但它是在没有容器参数的情况下实例化的(即 $this->container 返回 null)。
反正有没有将容器传递给我要更改的控制器?
class AuthenticationListener
{
public function onController(FilterControllerEvent $event)
{
$request = $event->getRequest();
$session = $request->getSession();
if (!$session->has('authenticated') || $session->get('authenticated') === false)
{
$controller = $event->getController();
if (!($controller[0] instanceof AuthenticateController) && !($controller[0] instanceof ExceptionController))
{
$event->setController(array(new AuthenticateController(), 'loginAction'));
}
}
}
}