Adicionando o whoops ao Laravel 5 11

Ola pessoal

Já devem ter percebido que foram feitas muitas mudanças no Laravel 5, mas não vim aqui falar sobre isso, e sim da tela de debug,  alguns ja devem estar sentido a falta dela, ou ainda não perceberam mas ela não vem mais por padrão junto com Laravel 5.

essa tela acima é do package filp/whoops que antes estava presente no laravel 4, mas é muito simples instalar ela novamente

pesquisando no google e achei um topico do laracasts  comentando sobre ela:

https://laracasts.com/discuss/channels/general-discussion/whoops-removed-from-laravel-5

só que a principio achei meio confuso, e os primeiros exemplos não funcionaram

só deu certo apenas o exemplo da pagina 4, por isso vou explicar aqui para ajudar quem estiver procurando essa solução.

1) Adicione o package whoops no composer.json ( cuidado com a virgula )

2)  Crie um arquivo chamado WhoopsHandler.php e salve ele na pasta app/Exceptions

</pre>
<?php namespace App\Exceptions;

use Exception;
use Illuminate\Http\Response;
use App\Exceptions\Handler as BaseExceptionHandler;

class WhoopsHandler extends BaseExceptionHandler {

 /**
 * Render an exception into a response.
 *
 * @param \Illuminate\Http\Request $request
 * @param \Exception $e
 * @return \Symfony\Component\HttpFoundation\Response
 */
 public function render($request, Exception $e) {
 $whoops = new \Whoops\Run;

 if ($request->ajax())
 {
 $whoops->pushHandler(new \Whoops\Handler\JsonResponseHandler());
 }
 else
 {
 $whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler());
 }

 return new Response($whoops->handleException($e), $e->getStatusCode(), $e->getHeaders());
 }
}
<pre>

3) Edite o arquivo bootstrap/app.php adicione ‘App\Exceptions\WhoopsHandler’, dentro do $app->singleton entre ExceptionHandler e Handler

Com laravel 5.1 basta editar o render do Handler.php

public function render($request, Exception $e)
 {
     if ($e instanceof ModelNotFoundException) {
     $e = new NotFoundHttpException($e->getMessage(), $e);
 }

$whoops = new \Whoops\Run;

if ($request->ajax())
{
     $whoops->pushHandler(new \Whoops\Handler\JsonResponseHandler());
}
 else
 {
     $whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler());
 }

 return new \Illuminate\Http\Response(
     $whoops->handleException($e),
     $e->getStatusCode(),
     $e->getHeaders()
  );
 }

Pronto ja está funcionando a tela de debug com whoops :)

só lembrando novamente que o credito todo é desse link:

https://laracasts.com/discuss/channels/general-discussion/whoops-removed-from-laravel-5/?page=4

  • Rafael Bordallo

    Congratulations!!! Excelente contribuição!

  • gcdesigner

    Show.. Percebi que meu Laravel estava realmente diferente. =)

  • mlops

    Obrigado!! muito bom, chato isso nos acostumamos com uma coisa derrepent e tudo muda.

  • Edgard da Cunha Pontes

    Muito bom! Ótima dica!

  • http://jeffe.com.br/ Jefferson Giovani

    Aqui não tem jeito de fazer rodar! :/

    • Fabyo

      Acabei de testar com a ultima versao do laravel e nao teve nenhum problema na instalação do whoops, seguiu os passos certinho?

      • http://jeffe.com.br/ Jefferson Giovani

        Infelizmente não deu certo.

        • Fabyo
        • Fernando Tholl Nascimento

          Talvez já tenha resolvido, mas passei pelo mesmo problema, esta usando Laravel 5.1?

          Tente:
          AppExceptionsWhoopsHandler::class

          • http://jeffe.com.br/ Jefferson Giovani

            Eu estava usando o 5.0, vou tentar configurar em um novo projeto pra ver :)

    • Roberto Santos

      Dois palpites de possíveis erros:
      1) Faltou retirar o que veio na edição do arquivo WhoopsHandler.php (item 2);
      2) Faltou usar o comando composer update.