根据收到的请求在 Yii2 中的 $_POST 中设置值?

Aab*_*ain 4 php yii2 yii2-advanced-app

我正在编写一个拦截器来验证从 POST 收到的请求和解码数据。解码数据后,我必须设置数据,$_POST以便我以前的所有编写器功能都能正常工作。

我已经设置了如下值

$_POST['amount'] = $data['a'];
$_POST['currency'] = $data['c'];
Run Code Online (Sandbox Code Playgroud)

我能够使用这些变量,$_POST但无法访问这些值Yii::$app->request->post()

所以我的问题是我可以通过 Yii::$app->request->post()

rob*_*006 6

发布数据缓存在Request组件内部,因此任何更改$_POST都不会反映在Yii::$app->request->post(). 但是,您可以使用setBodyParams()重置此缓存:

Yii::$app->request->setBodyParams(null);

$post = Yii::$app->request->post();
Run Code Online (Sandbox Code Playgroud)

或者只是用来setBodyParams()直接设置您的数据而无需触摸$_POST

Yii::$app->request->setBodyParams(['amount' => $data['a'], 'currency' => $data['c']]);
Run Code Online (Sandbox Code Playgroud)