Zoeken…
Opmerkingen
Vergeet niet om uw toepassing in te stellen voor e-mailen door te zorgen voor de juiste configuratie van config/mail.php
Controleer ook of de ENV-variabelen correct zijn ingesteld.
Dit voorbeeld is een richtlijn en is minimaal. Verken, wijzig en stijl de weergave naar wens. Pas de code aan om aan uw behoeften te voldoen. Stel bijvoorbeeld de ontvanger in uw .env- bestand in
Verzend foutrapport e-mail
Uitzonderingen in Laravel worden afgehandeld door App \ Exceptions \ Handler.php
Dit bestand bevat standaard twee functies. Melden en weergeven. We zullen alleen de eerste gebruiken
public function report(Exception $e)
De rapportmethode wordt gebruikt om uitzonderingen te loggen of naar een externe service zoals BugSnag te verzenden. Standaard geeft de rapportmethode de uitzondering eenvoudig door aan de basisklasse waar de uitzondering is vastgelegd. U bent echter vrij om uitzonderingen te registreren zoals u dat wenst.
In wezen stuurt deze functie de fout gewoon door en doet niets. Daarom kunnen we bedrijfslogica invoegen om bewerkingen uit te voeren op basis van de fout. Voor dit voorbeeld sturen we een e-mail met de foutinformatie.
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);
}
De weergave voor de e-mail ("emails.exception_notif") is hieronder
<?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>
Toepassing brede ModelNotFoundException vangen
app \ Uitzonderingen \ Handler.php
public function render($request, Exception $exception)
{
if ($exception instanceof ModelNotFoundException) {
abort(404);
}
return parent::render($request, $exception);
}
Je kunt elke uitzondering vangen / verwerken die in Laravel wordt gegooid.