我正在使用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()
答案 0 :(得分:2)
从容器中获取会话
$session = $this->container->get('session');
答案 1 :(得分:-1)
我确实找到了答案,
问题不在于获取/设置会话的方式,问题的出现是因为我通过控制器传递信息而我正在使用非本地symfony方式。在控制器中传递信息的正确方法是:
$response = $this->forward('YourBundle:YourController:YourAction', array(
'user'=>$user
));
return $response;
然后在另一个控制器中设置会话并渲染模板。