imperium2335
Tengo dos campos:
Correo electrónico
¿Cómo configuro un objeto Validador para que se deba completar uno de estos campos? No importa cuál.
$messages = array(
'email.required_without:qq' => Lang::get('messages.mustenteremail'),
'email.email' => Lang::get('messages.emailinvalid'),
'qq.required_without:email' => Lang::get('messages.mustenterqq'),
);
required_without
Deberia trabajar.
Significa que el campo es obligatorio si el otro campo no está presente. Si tiene más de dos campos y solo uno es obligatorio, utilice required_without_all:foo,bar,...
$rules = array(
'Email' => 'required_without:QQ',
'QQ' => 'required_without:Email',
);
-
No del todo seguro. Prefiero pensar que es solo
email.required_without
sin el parámetro de regla real, pero tendrá que probar…– lukasgeiter
10 de enero de 2015 a las 11:11
-
Es sin, lo que parece un poco limitante 🙁
– imperium2335
10 de enero de 2015 a las 11:34
-
¿Por qué es eso limitante? ¿Solo puede usar la misma regla una vez en el mismo campo de todos modos?
– lukasgeiter
10 de enero de 2015 a las 11:35
-
Quiero arrojar un error solo cuando ambos campos están ausentes. ¿Qué debería hacer? Debería funcionar cuando ambos campos están presentes.
– Dinesh Gowda
10 de mayo de 2018 a las 12:08
-
Encontré esa documentación un poco extraña. Gracias por señalar esto con un ejemplo.
–Alwin Kesler
27 de julio de 2018 a las 19:56
En el ejemplo anterior (dado por lucasgeiter) en realidad solo necesita una de las condiciones, no ambas.
$rules = array(
'Email' => 'required_without:QQ'
);
Si tiene ambas reglas, no completar ninguna hará que se muestren DOS mensajes de error. De esta manera, comprobará que al menos un campo esté lleno y solo mostrará un mensaje de error si ninguno está lleno.
-
Este es un muy buen punto. Haciendo o campo obligatorio cuando el otro está vacío activará el error cuando ambas cosas están perdidos. Agregar un mensaje de error personalizado que no hace referencia al
:attribute
que desencadenó el error de validación será importante al hacer esto.– Jasón
12 de mayo a las 15:06
Laravel >= 8.32 solo soporte.
Ambos (móvil o correo electrónico) se presentan simultáneamente -> a través de un error.
Ambos (móvil o correo electrónico) no están presentes simultáneamente -> por un error.
Permitió
Solo se puede permitir un parámetro.
'email' => [ 'prohibited_unless:mobile,null,','required_without:mobile','email', 'max:255', ],
'mobile' => [ 'prohibited_unless:email,null','required_without:email', 'digits_between:5,13', 'numeric' ],