Zend framework2 DbTableGateway未将会话信息写入数据库表
我试图使用DbTableGateway将会话信息存储在MySQL数据库中,但我的“会话”表仍然是空的。它从不包含任何行。这是我的代码(或多或少是从中复制/粘贴的): 下面是我使用此代码的视频演示: 正如您在视频中所看到的,会话信息在请求之间被保留,但不会存储在数据库中 我在Zend framework2 DbTableGateway未将会话信息写入数据库表,zend-framework2,php,zend-session,Zend Framework2,Php,Zend Session,我试图使用DbTableGateway将会话信息存储在MySQL数据库中,但我的“会话”表仍然是空的。它从不包含任何行。这是我的代码(或多或少是从中复制/粘贴的): 下面是我使用此代码的视频演示: 正如您在视频中所看到的,会话信息在请求之间被保留,但不会存储在数据库中 我在Zend\Session\SaveHandler\DbTableGateway中的每个函数中都添加了断点,唯一被击中的是在_构造函数中。所以构造函数被调用了,但显然它从来没有被用于其他任何事情 我错过了什么 我正在PHP5.
Zend\Session\SaveHandler\DbTableGateway
中的每个函数中都添加了断点,唯一被击中的是在_构造函数中。所以构造函数被调用了,但显然它从来没有被用于其他任何事情
我错过了什么
我正在PHP5.3上使用Zend Framework 2.2.2
-Josh如果您需要快速实现,我找到了一些模块来实现这一点 要使用当前代码,请检查:
- **DbTableGatewayOptions**(id、数据、生存期等)的选项
- SessionManager$manager->start()的开始强>
'vendor/composer/autoload_namespace.php'
和
'vendor/composer/autoload_static.php'
是否添加了zend和zendxml库路径
例如:'Zend'=>数组(vendorDir./ZF2/library),
“ZendXml”=>array(vendorDir./ZF2/library”)
非常感谢您的建议,我可能得到了这个方法,但我真的很想了解Zend\Session\SaveHandler\DbTableGateway
为什么没有按配置工作。我尝试添加$manager->start()
。没有变化。然后我尝试了$manager->start(true)
。还是没有变化。我不会将任何选项传递给DbTableGatewayOptions。我所做的与ZF文档中所示的相同,在我的问题中链接到。但文件可能不完整。如何设置DbTableGatewayOptions对象?没有更改,会话数据库中仍然没有显示任何内容:-(
$dbAdapter = new Zend\Db\Adapter\Adapter(array(
'driver' => 'pdo_mysql',
'database' => 'db-name',
'username' => 'username',
'password' => 'password!'
));
$tableGateway = new \Zend\Db\TableGateway\TableGateway('session', $dbAdapter);
$saveHandler = new \Zend\Session\SaveHandler\DbTableGateway($tableGateway, new \Zend\Session\SaveHandler\DbTableGatewayOptions());
$manager = new \Zend\Session\SessionManager();
$manager->setSaveHandler($saveHandler);
$someContainer = new Container('SomeSessionNamespace');
$someContainer->aBitOfData = 'tasty morsel of data';
$options = new \Zend\Session\SaveHandler\DbTableGatewayOptions();
$options->setDataColumn('data');
$options->setIdColumn('id');
$options->setLifetimeColumn('lifetime');
$options->setNameColumn('name');
$options->setModifiedColumn('modified');