Php Symfony2:以编程方式启动会话
我希望我的应用程序中有一个全局侦听器在会话超时后重定向用户 我正在收听Php Symfony2:以编程方式启动会话,php,session,symfony,Php,Session,Symfony,我希望我的应用程序中有一个全局侦听器在会话超时后重定向用户 我正在收听SessionUnavailableException的内核.exception事件: public function onKernelException(GetResponseForExceptionEvent $event) { $exception = $event->getException(); if ($exception instanceof SessionUnavailableExcep
SessionUnavailableException
的内核.exception
事件:
public function onKernelException(GetResponseForExceptionEvent $event)
{
$exception = $event->getException();
if ($exception instanceof SessionUnavailableException) {
//start new session and set flash here...
$response = new RedirectResponse($this->router->generate('homepage'));
$event->setResponse($response);
}
}
此代码在会话超时后执行。问题是如果我像这样离开代码,异常将在一个无休止的循环中触发。我需要在这里启动并保存会话,但找不到如何执行此操作
有什么帮助吗
顺便问一下,这是实现我的目标的一个聪明的方法吗?我想您可以添加以下代码开始会话:
use Symfony\Component\HttpFoundation\Session\Session;
而且
$session = new Session();
$session->start();
..然后您可以设置闪存消息:
$session->getFlashBag()->add(
'warning',
'El tiempo de su sesión se ha agotado. Por favor, vuelva a ingresar al sistema.'
);
如何在此处启动新会话?我以为您尝试在此处创建会话,但未运行。此函数将在任何控制器之前调用,所以如果您没有任何会话并尝试将其重定向到主页,它将在永久循环中运行。您应该在重定向之前创建会话,或者如果它不是主页操作(从事件中获取请求对象:$event->getRequest()),则应该重定向,并在主页操作中创建会话。@songuyen您知道如何以编程方式创建会话吗?在Symfony2中,如果会话对象的所有setXXX方法未准备就绪,则将启动新会话。我认为您可以像listener一样从容器中获取会话,并在其中设置一些变量:$session->set('foo','bar');希望它能对你有所帮助。我对它不太了解,但$session=newsession()有帮助吗$会话->开始();工作