取消设置和重置后会话变量为空
Session Variable empty after unsetting and resetting
我正在使用 Zend Framework 3 和 SessionManager,我正在尝试构建一个控制器插件/视图助手,以在验证一些数据后显示确认对话框。这个想法只是简单地设置一个会话变量,其中包含确认对话所需的一切,通过视图读取它,然后取消设置。但即使是这个简单的循环也会失败。该插件在控制器调用时基本上会执行此操作:
$dataArray = [
'some_data' => 'data'
];
$this->sessionManager->getStorage()->confirmDialog = $dataArray;
在 layout.phtml 中,我调用我的视图助手来执行此操作:
public function __invoke() {
$data = $this->sessionManager->getStorage()->confirmDialog;
$this->sessionManager->getStorage()->clear('confirmDialog');
return $this->getDialog($data);
}
我确实将 sessionManager 注入了插件和视图助手。当在接收到它的数据后不清除变量时,我从会话变量中获取更改的数据并且它由插件更新,因为它should.But 在第一次读取它后清除变量时,它总是空的。
这是我的 global.php 设置:
'session_manager' => [
'validators' => [
RemoteAddr::class,
HttpUserAgent::class,
]
],
'session_storage' => [
'type' => SessionArrayStorage::class
]
因为该值是通过引用传递的,当你清除它时,你也清除了读取的信息。
正如我在评论中提到的,我建议使用默认的 falsh messenger 插件,但如果您想创建自己的插件,这里有源代码的提示,它向您展示了如何实现默认的 clear从会话中读取后。
此设置实际上是告诉会话容器在“1 跳”后删除该信息,即。以防下次请求。
我正在使用 Zend Framework 3 和 SessionManager,我正在尝试构建一个控制器插件/视图助手,以在验证一些数据后显示确认对话框。这个想法只是简单地设置一个会话变量,其中包含确认对话所需的一切,通过视图读取它,然后取消设置。但即使是这个简单的循环也会失败。该插件在控制器调用时基本上会执行此操作:
$dataArray = [
'some_data' => 'data'
];
$this->sessionManager->getStorage()->confirmDialog = $dataArray;
在 layout.phtml 中,我调用我的视图助手来执行此操作:
public function __invoke() {
$data = $this->sessionManager->getStorage()->confirmDialog;
$this->sessionManager->getStorage()->clear('confirmDialog');
return $this->getDialog($data);
}
我确实将 sessionManager 注入了插件和视图助手。当在接收到它的数据后不清除变量时,我从会话变量中获取更改的数据并且它由插件更新,因为它should.But 在第一次读取它后清除变量时,它总是空的。
这是我的 global.php 设置:
'session_manager' => [
'validators' => [
RemoteAddr::class,
HttpUserAgent::class,
]
],
'session_storage' => [
'type' => SessionArrayStorage::class
]
因为该值是通过引用传递的,当你清除它时,你也清除了读取的信息。
正如我在评论中提到的,我建议使用默认的 falsh messenger 插件,但如果您想创建自己的插件,这里有源代码的提示,它向您展示了如何实现默认的 clear从会话中读取后。
此设置实际上是告诉会话容器在“1 跳”后删除该信息,即。以防下次请求。