【发布时间】:2018-03-16 18:12:54
【问题描述】:
我正在使用 Zend Framework 3 和 SessionManager 并且我试图构建一个控制器插件/视图助手以在验证某些 Data 后显示确认对话框。这个想法只是简单地设置一个包含确认对话所需的所有内容的 Session 变量,通过视图读取它,然后取消设置它。但即使是这个简单的循环也失败了。该插件在被控制器调用时基本上是这样做的:
$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 注入到插件和视图助手中。在收到数据后不清除变量时,我从会话变量中获取更改的数据,并由插件按应有的方式更新。但是在第一次读取变量后清除变量时,它始终为空。
这里是我的 global.php 设置:
'session_manager' => [
'validators' => [
RemoteAddr::class,
HttpUserAgent::class,
]
],
'session_storage' => [
'type' => SessionArrayStorage::class
]
【问题讨论】:
-
为什么不直接使用 flashmessenger 插件呢? docs.zendframework.com/zend-mvc-plugin-flashmessenger
标签: php session zend-framework3