validaciones example activeform yii2

example - ¿Por qué no puedes verificar tu error de envío de datos en Yii2?



yii2 unique validation example (9)

Error:

No se puede verificar su error de envío de datos

Crea una función pública en Yii2. Pero, envíe los datos que no acepte en este método, vea las siguientes imágenes de error. ¿Por qué sucede esto?


$ csrf = / yii :: $ app-> request-> csrfParam;

$ token = / yii :: $ app-> request-> csrfToken;

//empezar desde

echo Html :: hiddenInput ($ csrf, $ token);

// termina desde


Agregue esto en su controlador :

public $enableCsrfValidation = false;


Compruebe si hay entradas ocultas en su formulario con el token CSRF. Debe parecer

<input type="hidden" name="_csrf" value="ZEZ6Y0xrY3ARGS42fTwhMQgkDgF6BCEGEx4SMXQMBR4CPy0iPCIwNQ==">


Existen varias soluciones para este problema, supongo que entender por qué sucedió en primer lugar ayuda a resolver el problema.

  1. Es causada por un token csrf no válido, token csrf generado por el usuario, token csrf caducado, todos estos problemas ''csrf'' surgirán cuando tenga formularios personalizados creados sin usar la clase ''ActiveForm''.

Si CSRF no es el problema,

  1. Su otra causa se produce cuando intenta cargar varios archivos y el servidor web no puede manejar la carga. Algunas de las propiedades para verificar esto para asegurarse de que está en el camino correcto es calcular el tamaño de los archivos que uno intenta cargar y revisar los servidores post_max_size y upload_max_filesize del servidor web.

Si está ejecutando Linux, revise el archivo php.ini para obtener entradas como las siguientes:

; 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 base a sus cálculos, ajuste los parámetros de php.ini anteriores para satisfacer sus necesidades, luego realice la prueba. Tuve un problema similar y lo resolví.


Para deshabilitar permanentemente la validación csrf en toda la aplicación, agregue el siguiente código en sus configuraciones.

$config = [ ''components'' => [ ''request'' => [ ''enableCsrfValidation'' => false, ], ], ];



También a veces puede obtener este error usando Yii 2.0 debido a post_max_size, upload_max_filesize, max_input_time también puede que el servidor web pueda recortar la publicación así que verifique en nginx - client_max_body_size o en apache - LimitRequestBody


Una larga historia ha sido discutida aquí github

Así que deshabilita csrf de alguna manera inseguro para la solicitud ajax. Me he encontrado con este problema muchas veces.

Así que recuerde enviar la clave _csrf cuando envíe datos por POST a través de ajax.


Agregue esto en la sección principal de su diseño: <?= Html::csrfMetaTags() ?>