Sök…


Anmärkningar

Kom ihåg att ställa in din applikation för e-post genom att säkerställa korrekt konfiguration av config/mail.php

Kontrollera också att ENV-variabler är korrekt inställda.

Detta exempel är en guide och är minimal. Utforska, ändra och utforma vyn som du vill. Justera koden för att tillgodose dina behov. Ställ till exempel in mottagaren i din .env- fil

Skicka e-post med felrapport

Undantag i Laravel hanteras av App \ Exceptions \ Handler.php

Denna fil innehåller två funktioner som standard. Rapportera & återge. Vi kommer bara att använda det första

 public function report(Exception $e)

Rapportmetoden används för att logga undantag eller skicka dem till en extern tjänst som BugSnag. Som standard överför rapportmetoden undantaget till basklassen där undantaget loggas. Du är emellertid fri att logga in undantag som du än vill.

Den här funktionen vidarebefordrar bara felet och gör ingenting. Därför kan vi infoga affärslogik för att utföra operationer baserat på felet. För detta exempel skickar vi ett e-postmeddelande med felinformation.

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);
}

Vyn för e-postmeddelandet ("e-post.exception_notif") är nedan

<?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>

Fångar applikationsbrett ModelNotFoundException

app \ Undantag \ Handler.php

public function render($request, Exception $exception)
{
    if ($exception instanceof ModelNotFoundException) {
        abort(404);
    }

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

Du kan fånga / hantera alla undantag som kastas i Laravel.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow