我有一个使用php本地会话的软件包,所以我用它来处理它:
framework:
session:
storage_id: session.storage.php_bridge
handler_id: ~
在我的第一个动作中,会话正在运行,我获得了php的本机会话中提供的用户名。但是一旦我改变了Action,我的会话就是空的。
我实际上有这个:
indexAction(){
$phpCas->execute(); //my service with the php's native session
$session = new Session();
$session->start();
$user = $session->get('username')['fullName'];//I successfully get my full name
}
anotherAction(){
$session = new Session();
$session->start();
$array = $session->all();
echo "<pre>";
print_r($array); //array is empty
echo "</pre>";
}
我试过$ session = $ request-&gt; getSession();但仍然是空的。
还尝试了$ session-&gt; save();
和此:
framework:
session:
storage_id: session.storage.php_bridge
handler_id: session.handler.native_file
save_path: "%kernel.root_dir%/sessions"
感谢您的帮助。
EDIT1: 感谢第一个答案现在看起来像:
public function indexAction(Request $request)
{
$session = $request->getSession();
$user = $session->get('user');
if($user == null)
{
$phpCas = $this->container->get('phpcas');
$phpCas->execute();
$session = new Session();
$session->start();
$user = $session->get('username')['fullName'];
$session->set('user', $user);
}
public function createAction($persno, Request $request)
{
$session = $request->getSession();
$array = $session->all();
echo "<pre>";
print_r($array);
echo "</pre>";
}
我在第二个Action中仍然得到一个空会话,我忘了提到我以这种方式访问第二个Action:
return $this->redirect($this->generateUrl('admin_platform_create', array(
'persno' => $persno,
)));
可能是问题吗?
EDIT2: 我现在正在尝试做上一篇文章中的那个人说: http://forum.symfony-project.org/viewtopic.php?f=23&t=71389
但实际上我也无法使其发挥作用。
答案 0 :(得分:0)
您不需要启动会话,因为它已经被Symfony自动启动,您也应该从请求($ session = $ request-&gt; getSession())或容器($ session = $ this-)获取会话在控制器中使用&gt; container-&gt; getSession())
use Symfony\Component\HttpFoundation\Request;
indexAction(Request $request){
$phpCas->execute(); //my service with the php's native session
$session = $request->getSession();
$user = $session->get('username')['fullName'];//I successfully get my full name
}
anotherAction(Request $request){
$session = $request->getSession();
$array = $session->all();
echo "<pre>";
print_r($array); //array is empty
echo "</pre>";
}
您的更新进行了修改:
createAction($ persno,Request $ request) - 错误
createAction(Request $ request,$ persno) - right
你不应该直接将请求放在重定向中,它是由Symfony自动插入的第一个参数