Casilla de verificación de validación de Laravel

3 minutos de lectura

avatar de usuario
sander van keer

Estoy usando la función de registro de laravel para registrar un usuario. Agregué una casilla de verificación donde el usuario debe aceptar los términos y condiciones. Solo quiero que el usuario se registre cuando la casilla de verificación esté marcada. ¿Puedo usar la validación ‘requerida’ en laravel? Esta es mi función de validación:

 return Validator::make($data, [
        'firstName' => 'required|max:255',
        'lastName' => 'required|max:255',
        'email' => 'required|email|max:255|unique:users',
        'password' => 'required|confirmed|min:6',
        'checkbox' =>'required',
    ]);

Cuando uso la función como esta, laravel da el error requerido para la casilla de verificación, incluso si está marcada.

Este es el html de la casilla de verificación.

<input type="checkbox" name="checkbox" id="option" value="{{old('option')}}"><label for="option"><span></span> <p>Ik ga akkoord met de <a href="#">algemene voorwaarden</a></p></label>

¡Espero que puedan ayudarme!

  • ¿Cómo es tu forma? ¿Revisaste los datos reales de la publicación en las herramientas de desarrollo? Probablemente el html está mal, por lo que no se están publicando los datos. Sugerencia: si está utilizando un IDE moderno, instale xdebug y establezca un punto de interrupción

    –Steve

    20 mayo 2016 a las 11:25

  • Funcionará, solo asegúrese de que el valor de entrada no sea una cadena vacía o falsa. Y ‘casilla de verificación’ => ‘requerido’ está bien siempre que la clave sea el valor del atributo de nombre de entrada.

    – Calín Blaga

    20 mayo 2016 a las 11:40


  • ¡Gracias hombre! ¿Puedes publicar esto como respuesta? De esta manera puedo aceptarlo y actualizarlo.

    – Sander Van Keer

    20 mayo 2016 a las 11:45

avatar de usuario
SerpienteDrak

Utilizar el accepted regla.

El campo bajo validación debe ser sí, activado, 1 o verdadero. Esto es útil para validar la aceptación de los “Términos de servicio”.

Muestra para su caso:

 return Validator::make($data, [
    'firstName' => 'required|max:255',
    'lastName' => 'required|max:255',
    'email' => 'required|email|max:255|unique:users',
    'password' => 'required|confirmed|min:6',
    'checkbox' =>'accepted'
]);

  • Esta es la respuesta correcta para las casillas de verificación de los Términos de servicio.

    – Ramón Baker

    13 de agosto de 2018 a las 19:59

  • Esto omitió los términos del lado del servidor que aceptan la validación si la publicación se realiza manualmente. La solución es poner aceptado primero y luego requerido.

    – Henrikh

    14 de enero a las 9:22


Funcionará, solo asegúrese de que el valor de entrada no sea una cadena vacía o falsa. Y ‘casilla de verificación’ => ‘requerido’ está bien siempre que la clave sea el valor del atributo de nombre de entrada.

Acabo de tener una gran frustración, porque el código que estoy usando devuelve el valor de la casilla de verificación como un valor booleano.

Si tienes una situación similar puedes usar la siguiente regla:

[
 'checkbox_field' => 'required|in:1',
]

Usar requerido_sin_todo para la casilla de verificación:

return Validator::make($data, [
        'firstName' => 'required|max:255',
        'lastName' => 'required|max:255',
        'email' => 'required|email|max:255|unique:users',
        'password' => 'required|confirmed|min:6',
        'checkbox' =>'required_without_all',
    ]);

Referirse : https://laravel.com/docs/5.1/validation#disponible-validation-rules

Sus reglas de validación deben corroborar con el name atributos de sus campos de formulario html:

 return Validator::make($data, [
        'firstName' => 'required|max:255',
        'lastName' => 'required|max:255',
        'email' => 'required|email|max:255|unique:users',
        'password' => 'required|confirmed|min:6',
        'option' =>'required', //not checkbox
    ]);

  • Lo siento, usé la casilla de verificación solo en stackoverflow para dejar en claro que era una casilla de verificación. Los nombres son los mismos en mi computadora. Edité la pregunta.

    – Sander Van Keer

    20 de mayo de 2016 a las 11:34

  • Lo siento, usé la casilla de verificación solo en stackoverflow para dejar en claro que era una casilla de verificación. Los nombres son los mismos en mi computadora. Edité la pregunta.

    – Sander Van Keer

    20 de mayo de 2016 a las 11:34

¿Ha sido útil esta solución?