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.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow