Поиск…


замечания

Не забудьте настроить приложение для отправки по электронной почте, config/mail.php правильную конфигурацию config/mail.php

Также проверьте, правильно ли установлены переменные ENV.

Этот пример является ориентиром и минимален. Изучите, измените и настройте представление по своему усмотрению. Измените код, чтобы он соответствовал вашим потребностям. Например, установите получателя в файл .env

Отправить сообщение об ошибке

Исключения в Laravel обрабатываются App \ Exceptions \ Handler.php

По умолчанию этот файл содержит две функции. Отчет и рендеринг. Мы будем использовать только первый

 public function report(Exception $e)

Метод report используется для регистрации исключений или отправки их во внешнюю службу, например BugSnag. По умолчанию метод отчета просто передает исключение базовому классу, в котором регистрируется исключение. Однако вы можете регистрировать исключения, как пожелаете.

По сути эта функция просто пересылает ошибку и ничего не делает. Поэтому мы можем вставить бизнес-логику для выполнения операций на основе ошибки. В этом примере мы отправим электронное письмо с информацией об ошибке.

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

Представление для электронной почты ("emails.exception_notif") ниже

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

Широкое охват приложения ModelNotFoundException

Приложение \ Исключения \ handler.php

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

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

Вы можете поймать / обработать любое исключение, которое бросается в Laravel.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow