请求会话返回FatalErrorException:错误:在非对象上调用成员函数get()

时间:2013-11-16 03:37:33

标签: php session symfony

我正在使用symfony并尝试设置并获取会话变量以通过树枝模板。

我尝试了symfony示例中的方式:http://symfony.com/doc/current/components/http_foundation/sessions.html

$session = new Session();
$session->start();

// set and get session attributes
$session->set('name', 'Drak');
$session->get('name');

嫩枝:

{{ app.session.get('balance') }}

返回此错误消息:

在呈现模板期间抛出异常(“无法启动会话:已经由PHP启动(设置了$ _SESSION)。”)

我检查我的php.ini并且会话没有自动启动,也没有其他会话现场。

我也是这样试过的:

   $session = $this->getRequest()->getSession();
// We store an attribute
        $session->set('FrenchTouch', 'Julian');
// in another controller for another request, we retrieve the value of this attribute
        $value = $session->get('FrenchTouch');
        print_r(array($value));

但是返回另一个错误:

FatalErrorException:错误:在非对象上调用成员函数get()

2 个答案:

答案 0 :(得分:2)

从容器中获取会话

$session = $this->container->get('session');

答案 1 :(得分:-1)

我确实找到了答案,

问题不在于获取/设置会话的方式,问题的出现是因为我通过控制器传递信息而我正在使用非本地symfony方式。在控制器中传递信息的正确方法是:

$response = $this->forward('YourBundle:YourController:YourAction', array(
 'user'=>$user
));
return $response;

然后在另一个控制器中设置会话并渲染模板。