【问题标题】:Cakephp 4 Method "session()" does not existCakephp 4 方法“session()”不存在
【发布时间】: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


【解决方案1】:

在 Cake 3 中,我们使用

$this->request->session();

在 Cake 4 中,Cake 改变了调用方法,现在是

$this->request->getSession()

详情:https://book.cakephp.org/4/en/development/sessions.html#accessing-the-session-object

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-17
    • 2013-12-30
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-15
    相关资源
    最近更新 更多