Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

280
Views
Comprobando si hay algún error de validación al usar la clase de solicitud de formulario personalizado

Estoy usando Laravel 5.4. Tengo una clase de solicitud de formulario personalizado donde tengo mis reglas y mensajes de validación y lo uso en mi controlador de la siguiente manera:

 public function store(CustomFormRequest $request) { // }

Estoy usando ajax para enviar la solicitud y cuando hay algún error de validación, Laravel arroja un error con una respuesta HTTP con un código de estado 422 que incluye una representación JSON de los errores de validación.

Pero no quiero eso. En cambio, dentro del método de mi controlador, quiero averiguar si hay algún error de validación y, si lo hay, quiero devolver una respuesta con algunos datos adicionales junto con los mensajes de validación, como este:

 // Inside my Controller public function store(CustomFormRequest $request) { if ($validator->fails()) { $errors = $validator->errors(); return response()->json(array('status' => 2, 'msg' => $errors->all() )); } }

Podrias ayudarme por favor ? Gracias por adelantado.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

La forma más fácil de hacer esto sería anular el método de response() para la clase de solicitud de formulario.

Para hacer esto, simplemente puede agregar algo como lo siguiente a su clase:

import Illuminate\Http\JsonResponse 
public function response(array $errors) { if ($this->expectsJson()) { return new JsonResponse(['status' => 2, 'msg' => $errors], 422); } return parent::response($errors); }

No olvide importar Illuminate\Http\JsonResponse

¡Espero que esto ayude!

over 4 years ago · Santiago Trujillo Report

0

Sé que desea la lógica en su controlador, pero aún puede aprovechar su archivo de solicitud para esto. En la documentación de Laravel (suponiendo que esté utilizando la última versión) se describe comoAgregar enlaces posteriores a las solicitudes de formulario :

Si desea agregar un gancho "después" a una solicitud de formulario, puede usar el método withValidator. Este método recibe el validador completamente construido, lo que le permite llamar a cualquiera de sus métodos antes de que se evalúen realmente las reglas de validación:

 /** * Configure the validator instance. * * @param \Illuminate\Validation\Validator $validator * @return void */ public function withValidator($validator) { $validator->after(function ($validator) { if ($this->somethingElseIsInvalid()) { $validator->errors()->add('field', 'Something is wrong with this field!'); } }); }
over 4 years ago · Santiago Trujillo Report

0

prueba esto:

 form.ajaxSubmit({ async: false, type: yourMethod, url: yourRoute, headers: { 'X-CSRF-TOKEN': "{{csrf_token()}}" }, dataType: 'json', success: function(data){ location.href = data.redirect_to; }, error: function(data) { var errors = data.responseJSON; var errorsArr = []; for (error in errors) { errorsArr.push(errors[error]); } errorsArr = $.map(errorsArr, function(n){ return n; }); alert("<strong class='text-danger'>" + errorsArr.join("<br>") + "</strong>"); console.log(errors); } });

y en el método de almacenamiento de su controlador, haga return:

 return response()->json(['redirect_to' => '/your_route']);
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!