Al enviar datos, aparece un valor vacío en Yii2, ¿por qué? Publicación de datos: id, nombre.
JS
let is = document.querySelector("meta[name='csrf-token']").content, ss = document.querySelector("meta[name='csrf-param']").content; fetch("http://site.se/react/save-babysitter", { method: "POST", headers: { "Content-Type": "application/json", "Accept": "application/json", "csrf-param": ss, "X-CSRF-Token": is }, body: JSON.stringify({ 'id': e.id, 'name': this.state.ChangeName }) }).then(response => response.json()) .then((data) => console.log(data));PHP
public function actionSaveBabysitter() { $request = Yii::$app->request; $post = $request->post('name'); echo json_decode($post);}
Código 200, publicación nula
De forma predeterminada, Yii lee los parámetros de publicación de la variable global $_POST . Pero el servidor web solo analiza la solicitud de envío del cuerpo como application/x-www-form-urlencoded o multipart/form-data . Si envía datos con Content-Type: application/json , no se analizan en la variable $_POST .
Para forzar a Yii a analizar la solicitud JSON, debe agregar el analizador json en yii\web\Request::$parsers .
Puede hacer eso, por ejemplo, en su archivo de configuración web.php :
'components' => [ 'request' => [ 'parsers' => [ 'application/json' => 'yii\web\JsonParser', ], // ... other configurations for request component ], // ... other components ]