Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

198
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda