如何在 CakePHP 3.4 中取消设置请求数据

Pat*_*ick 1 cakephp cakephp-3.0

我试图搜索这个,但我没有找到运气。

它说 $request->data 将在 4.0 中被弃用,并建议使用 $request->getData() 代替。

当我们没有取消设置的选项时,我该如何取消设置请求数据?

这在登录或使用密码注册时很有用。当他们验证失败时,他们必须重新输入密码。

ndm*_*ndm 5

有一种简单的方法可以在不触及请求对象的情况下执行此操作,即通过将空字符串传递给控件value选项,这样该字段在呈现时将始终为空:

$this->Form->control('password', ['value' => ''])
Run Code Online (Sandbox Code Playgroud)

话虽如此,如果确实需要取消设置请求对象上的 POST 数据(这通常表明您正在做的事情有问题),您可以使用withParsedBody()清空所有内容:

$this->request = $this->request->withParsedBody([]);
Run Code Online (Sandbox Code Playgroud)

或写回部分数组:

$data = $this->request->getData();
unset($data['password']);
$this->request = $this->request->withParsedBody($data);
Run Code Online (Sandbox Code Playgroud)

这可能看起来有点奇怪,但正如已经提到的,需要在请求对象上取消设置数据通常表明您的应用程序逻辑存在缺陷。