Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

203
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda