Impossible de vérifier votre erreur de soumission de données
Créez une fonction publique dans Yii2. Mais, soumettez des données non acceptées dans cette méthode, voir les images d'erreur suivantes. Pourquoi est-ce arrivé?
Ajoutez ceci dans la section principale de votre mise en page: <?= Html::csrfMetaTags() ?>
Si vous créez le formulaire manuellement (c'est-à-dire sans utiliser les méthodes de formulaire yii), vous devez ajouter un champ de saisie comme celui-ci:
<input type="hidden" name="_csrf" value="<?=Yii::$app->request->getCsrfToken()?>" />
source: http://zero-exception.blogspot.com/2015/01/yii2-using-csrf-token.html
Il existe différentes solutions à ce problème, je suppose que comprendre pourquoi cela s'est produit en premier lieu aide à résoudre le problème.
Si CSRF n'est pas le problème,
Si vous utilisez linux, vérifiez le fichier php.ini pour des entrées comme celles-ci:
; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
; http://php.net/post-max-size
post_max_size = 8M
; Whether to allow HTTP file uploads.
; http://php.net/file-uploads
file_uploads = On
; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 2M
En fonction de vos calculs, ajustez les paramètres php.ini ci-dessus pour répondre à vos besoins, puis testez. J'ai eu un problème similaire et je l'ai résolu.
Pour désactiver définitivement la validation csrf dans toute l'application, ajoutez le code ci-dessous dans vos configurations.
$config = [
'components' => [
'request' => [
'enableCsrfValidation' => false,
],
],
];
Parfois, vous pouvez également obtenir cette erreur en utilisant Yii 2.0 en raison de post_max_size, upload_max_filesize, max_input_time également trop peut-être que le serveur Web peut couper le message, alors vérifiez nginx - client_max_body_size ou dans Apache - LimitRequestBody
Une longue histoire a été discutée ici github
Donc, désactiver csrf en quelque sorte incertain pour la demande ajax. J'ai rencontré ce problème à plusieurs reprises.
N'oubliez donc pas d'envoyer la clé _csrf lorsque vous envoyez des données par POST via ajax.
Vérifiez s'il y a une entrée cachée dans votre formulaire avec le jeton CSRF. Cela devrait ressembler
<input type="hidden" name="_csrf" value="ZEZ6Y0xrY3ARGS42fTwhMQgkDgF6BCEGEx4SMXQMBR4CPy0iPCIwNQ==">
$ csrf =\yii :: $ app-> request-> csrfParam;
$ token =\yii :: $ app-> request-> csrfToken;
//commencer à partir de
echo Html :: hiddenInput ($ csrf, $ token);
// fin à partir de