Saltar al contenido

Reglas de validación requeridas_si con otra condición (Laravel 5.4)

Talía, miembro de este gran equipo de trabajo, nos hizo el favor de crear este post porque domina muy bien el tema.

Solución:

Acabo de encontrar el mismo problema y encontré la siguiente respuesta que parece funcionar para mí:

problema-usando-requerido-si-regla-de-validación-en-formulario-constructor

     return [
                'type_id'     => 'required|integer',
                'external_id' => 'required_if:type_id,==,3|nullable|integer',
            ];

resultado para mi:

campo no poblado, tipo id no 3 – aprobado

campo no completado, escriba id 3 – fallido – campo obligatorio

campo poblado, tipo id 3, no entero – falla en la regla de entero

campo poblado, escriba id 3, entero – pase – ¡todo bien!

nota: creo que la regla anulable vino en Laravel 5.3

Su regla realiza dos comprobaciones que son independientes entre sí; solo porque el external_id El campo no es obligatorio cuando el type_id != 3, no significa que se ignore la comprobación de enteros.

Lo que está buscando es una regla condicional, que le brinda un control más preciso de cuándo realizar una verificación, por ejemplo:

$validator = Validator::make($data, [
    'type_id'   => 'required|integer'
]);

$validator->sometimes('external_id', 'required|integer', function($input) 
    return $input->type_id == 3;
);

Al usar la validación de formularios, puede acceder a la instancia del validador subyacente anulando el getValidatorInstance() método:

class StoreRequest extends Request

        public function authorize()
        return true;
        

        public function rules()integer'
                ];
        

        protected function getValidatorInstance() integer', function($input) 
                return $input->type_id == 3;
            );
            return $validator;
        

valoraciones y reseñas

Tienes la opción de sostener nuestra función añadiendo un comentario y valorándolo te damos la bienvenida.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *