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

196
Views
Hacer que todos los códigos de estado de error devuelvan una única vista personalizada

De forma predeterminada , Laravel busca vistas de error en resources/views/errors y devuelve la vista correspondiente para el código de estado relevante, p. 404 o 403. En lugar de crear todas estas vistas manualmente, quiero usar mi propia vista personalizada para todos los códigos de error, con el código de error real y el mensaje mostrado dinámicamente en la vista usando getMessage() y cualquier otra función auxiliar que pueda estar disponible para me.

Esto me permitiría hacer esto normalmente:

 abort(<statuscode>, <mymessage>)

... pero siempre devuelve solo una vista.

Tenga en cuenta que lo que estoy preguntando no es lo mismo que lo que se solicita aquí , que es forzar todos los errores a 404 sin importar su código de estado real. Quiero mantener los códigos de estado como deberían ser, simplemente mostrarlos todos en la misma vista.

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

En el controlador de excepciones predeterminado , un método llamado getHttpExceptionView() determina la vista que se devolverá. Simplemente anúlelo en su clase App\Exceptions\Handler con la lógica deseada.

 use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface; protected function getHttpExceptionView($e) { if ($e->getStatusCode() === 409) { return "exceptions.special"; } return "exceptions.default"; }

Está devolviendo una ruta de vista estándar, separada por puntos si está usando directorios.

over 4 years ago · Santiago Trujillo Report

0

Como se describe en la respuesta de miken32 , agregué lo siguiente al final de la clase Handler dentro del archivo App\Exceptions\Handler.php :

 class Handler extends ExceptionHandler { // Default classes // ... protected function getHttpExceptionView($e) { // 409 errors are handled specially // Remove this if block entirely to serve them with the same error page as below if ($e->getStatusCode() === 409) { return "exceptions.special"; } return "errors.custom"; // Return a "custom" file under "resources/views/errors" } }

Luego agregué lo siguiente a mi vista de error:

 <h1 class="primary-header"> @if($exception) {{"Error " . $exception->getStatusCode().":"}} {{ $exception->getMessage() ? $exception->getMessage() : "page not found" }} @else {{ "Generic error: page not found" }} @endif </h1>

Esto ahora me permite usar la función abort() en un controlador, por ejemplo, para lanzar cualquier código de error HTTP con un mensaje opcional:

 Route::get("/failtest/", function (){ abort(404, "someone messed up"); });
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!