【发布时间】:2020-05-19 17:52:31
【问题描述】:
我有一个与 cakephp 4 中的会话相关的问题,它返回“会话不存在”,相同的功能在 cakephp 3 中运行良好,我查看了说明书并没有发现关于会话的任何新变化。
$session = $this->request->session();
$name = $session->read('User.name');
错误
2020-05-19 17:45:55 Error: [BadMethodCallException] Method "session()" does not exist in xxxxxxx//vendor/cakephp/cakephp/src/Http/ServerRequest.php on line 604
Stack Trace:
- xxxxxxx//src/Controller/UsersController.php:135
- xxxxxxx//vendor/cakephp/cakephp/src/Controller/Controller.php:521
- xxxxxxx//vendor/cakephp/cakephp/src/Controller/ControllerFactory.php:79
- xxxxxxx//vendor/cakephp/cakephp/src/Http/BaseApplication.php:229
- xxxxxxx//vendor/cakephp/cakephp/src/Http/Runner.php:77
- xxxxxxx//vendor/cakephp/authentication/src/Middleware/AuthenticationMiddleware.php:124
- xxxxxxx//vendor/cakephp/cakephp/src/Http/Runner.php:73
- xxxxxxx//vendor/cakephp/cakephp/src/Http/Middleware/BodyParserMiddleware.php:159
- xxxxxxx//vendor/cakephp/cakephp/src/Http/Runner.php:73
- xxxxxxx//vendor/cakephp/cakephp/src/Http/Runner.php:77
- xxxxxxx//vendor/cakephp/cakephp/src/Http/Middleware/CsrfProtectionMiddleware.php:137
- xxxxxxx//vendor/cakephp/cakephp/src/Http/Runner.php:73
- xxxxxxx//vendor/cakephp/cakephp/src/Http/Runner.php:58
- xxxxxxx//vendor/cakephp/cakephp/src/Routing/Middleware/RoutingMiddleware.php:162
- xxxxxxx//vendor/cakephp/cakephp/src/Http/Runner.php:73
- xxxxxxx//vendor/cakephp/cakephp/src/Routing/Middleware/AssetMiddleware.php:68
- xxxxxxx//vendor/cakephp/cakephp/src/Http/Runner.php:73
- xxxxxxx//vendor/cakephp/cakephp/src/Error/Middleware/ErrorHandlerMiddleware.php:119
- xxxxxxx//vendor/cakephp/cakephp/src/Http/Runner.php:73
- xxxxxxx//vendor/cakephp/cakephp/src/Http/Runner.php:58
- xxxxxxx//vendor/cakephp/cakephp/src/Http/Server.php:90
- xxxxxxx//webroot/index.php:40
【问题讨论】:
-
@ndn 有什么想法吗?
-
我试过这个 $this->getRequest()->getSession() 并且它有效,也许它会帮助别人
-
所有旧的组合 getter/setter 方法在 v4 中都消失了,取而代之的是单独的 get 和 set 版本。这在发行说明中有详细记录。
标签: session cakephp-4.x