为了账号安全,请及时绑定邮箱和手机立即绑定

$this->request->getData() 升级到 CakePHP 4.0 后为空

$this->request->getData() 升级到 CakePHP 4.0 后为空

PHP
HUH函数 2022-07-22 10:09:16
升级到 CakepPHP 4.0 后,我通过 XMLHttpRequest 发出的 POST 请求停止将数据传递给$this->request->getData()虽然可以访问数据,$this->request->input('json_decode');但 GET 请求也可以正常工作。但我想知道与 3.* 相比发生了什么变化,以及为什么它不像以前那样工作。这是我的 xhr:this.$http.post(            url,             data,             {headers: {'X-CSRF-TOKEN': '<?= $this->request->getAttribute('csrfToken') ?>'}},             })            .then(response => {                //            }        );当我打电话时它给了我一个空数组$this->request->getData()我试图为该特定操作关闭 FormProtection 组件,但没有任何改变。
查看完整描述

1 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

如果想知道发生了什么变化,请先查看迁移指南,在这种情况下,特别是组件的重大更改部分。


请求正文解析功能已从请求处理程序组件中删除(之前存在的弃用警告也已删除,因为它导致了太多误报)。这现在应该由body parser middleware处理,您需要相应地添加您的应用程序,或者在您的Application类中全局添加:


public function middleware(MiddlewareQueue $middlwareQueue): MiddlewareQueue

{

    // ...


    $middlwareQueue->add(new \Cake\Http\Middleware\BodyParserMiddleware());  


    return $middlwareQueue;

}

或在路由范围内:


\Cake\Routing\Router::scope('/', function (\Cake\Routing\RouteBuilder $routes) {

    $routes->registerMiddleware('bodyParser', new \Cake\Http\Middleware\BodyParserMiddleware());

    $routes->applyMiddleware('bodyParser');


    // ...

});


查看完整回答
反对 回复 2022-07-22
  • 1 回答
  • 0 关注
  • 91 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号