Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony2:以编程方式启动会话_Php_Session_Symfony - Fatal编程技术网

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()有帮助吗$会话->开始();工作