Ricerca…
Osservazioni
Ricordarsi di impostare la propria applicazione per l'invio di e-mail assicurando la corretta configurazione di config/mail.php
Verificare inoltre che le variabili ENV siano impostate correttamente.
Questo esempio è una guida ed è minimo. Esplora, modifica e modella la vista come desideri. Modifica il codice per soddisfare le tue esigenze. Ad esempio, imposta il destinatario nel tuo file .env
Invia messaggio di errore
Le eccezioni in Laravel sono gestite da App \ Exceptions \ Handler.php
Questo file contiene due funzioni per impostazione predefinita. Segnala e Renderizza. Useremo solo il primo
public function report(Exception $e)
Il metodo del report viene utilizzato per registrare le eccezioni o inviarle a un servizio esterno come BugSnag. Per impostazione predefinita, il metodo del report passa semplicemente l'eccezione alla classe base in cui viene registrata l'eccezione. Tuttavia, sei libero di registrare eccezioni come desideri.
Essenzialmente questa funzione inoltra semplicemente l'errore e non fa nulla. Pertanto, possiamo inserire la logica di business per eseguire operazioni basate sull'errore. Per questo esempio, invieremo un'email contenente le informazioni sull'errore.
public function report(Exception $e)
{
if ($e instanceof \Exception) {
// Fetch the error information we would like to
// send to the view for emailing
$error['file'] = $e->getFile();
$error['code'] = $e->getCode();
$error['line'] = $e->getLine();
$error['message'] = $e->getMessage();
$error['trace'] = $e->getTrace();
// Only send email reports on production server
if(ENV('APP_ENV') == "production"){
#1. Queue email for sending on "exceptions_emails" queue
#2. Use the emails.exception_notif view shown below
#3. Pass the error array to the view as variable $e
Mail::queueOn('exception_emails', 'emails.exception_notif', ["e" => $error], function ($m) {
$m->subject("Laravel Error");
$m->from(ENV("MAIL_FROM"), ENV("MAIL_NAME"));
$m->to("[email protected]", "Webmaster");
});
}
}
// Pass the error on to continue processing
return parent::report($e);
}
La vista per l'email ("emails.exception_notif") è sotto
<?php
$action = (\Route::getCurrentRoute()) ? \Route::getCurrentRoute()->getActionName() : "n/a";
$path = (\Route::getCurrentRoute()) ? \Route::getCurrentRoute()->getPath() : "n/a";
$user = (\Auth::check()) ? \Auth::user()->name : 'no login';
?>
There was an error in your Laravel App<br />
<hr />
<table border="1" width="100%">
<tr><th >User:</th><td>{{ $user }}</td></tr>
<tr><th >Message:</th><td>{{ $e['message'] }}</td></tr>
<tr><th >Action:</th><td>{{ $action }}</td></tr>
<tr><th >URI:</th><td>{{ $path }}</td></tr>
<tr><th >Line:</th><td>{{ $e['line'] }}</td></tr>
<tr><th >Code:</th><td>{{ $e['code'] }}</td></tr>
</table>
Catching application Wide ModelNotFoundException
app \ Eccezioni \ Handler.php
public function render($request, Exception $exception)
{
if ($exception instanceof ModelNotFoundException) {
abort(404);
}
return parent::render($request, $exception);
}
Puoi prendere / gestire qualsiasi eccezione che viene lanciata in Laravel.