2015-06-10 6 views
5

Faccio richieste Ajax al backend Laravel.Come ottenere un messaggio di eccezione non elaborato in HTML in Laravel?

Nel backend, controllo i dati della richiesta e generano alcune eccezioni. Laravel, per impostazione predefinita, genera pagine html con messaggi di eccezione.

Desidero rispondere solo al messaggio di eccezione non elaborato.

->getMessage() non funziona. Laravel, come sempre, genera html.

Cosa devo fare?

risposta

8

In Laravel 5 è possibile rilevare le eccezioni modificando il metodo render in app/Exceptions/Handler.php.

Se si desidera catturare eccezioni per tutte le richieste AJAX si può fare questo:

public function render($request, Exception $e) 
{ 
    if ($request->ajax()) { 
     return response()->json(['message' => $e->getMessage()]); 
    } 

    return parent::render($request, $e); 
} 

Questa sarà applicata a qualsiasi eccezione a richieste AJAX. Se la tua app sta inviando un'eccezione allo App\Exceptions\MyOwnException, puoi invece controllare quell'istanza.

public function render($request, Exception $e) 
{ 
    if ($e instanceof \App\Exceptions\MyOwnException) { 
     return response()->json(['message' => $e->getMessage()]); 
    } 

    return parent::render($request, $e); 
} 
+0

buono. ma come risposta di ritorno con errore? Voglio ottenere la risposta attraverso la funzione di errore di un errore. –

+0

@KamilDavudov intendi la risposta con un codice HTTP specifico? –

+0

sì! non riesco a trovarlo in laravel doc –