Как отправить уведомление по электронной почте в Laravel и MailTrap

Я пытаюсь отправить шаблон HTML в MailTrap, используя этот метод

public function send($result_id)
    {

         $result = Result::whereHas('user', function ($query) {
                 $query->whereId(auth()->id());
             })->findOrFail($result_id);

        \Mail::to('[email protected]')->send(new ResultMail);

        return view('client.result', compact('result'))->withStatus('Your test result has been sent successfully!');

    }

с результатом.blade.file

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Test No. {{ $result->id }}</title>
        <link href="{{ asset('css/app.css') }}" rel="stylesheet" type="text/css" />
        <style type="text/css">
            html {
                margin: 0;
            }
            body {
                background-color: #FFFFFF;
                font-size: 10px;
                margin: 36pt;
            }
        </style>
    </head>
    <body>
        <p class="mt-5">Total points: {{ $result->total_points }} points</p>
        <table class="table table-bordered">
            <thead>
                <tr>
                    <th>Question Text</th>
                    <th>Points</th>
                </tr>
            </thead>
            <tbody>
                @foreach($result->questions as $question)
                    <tr>
                        <td>{{ $question->question_text }}</td>
                        <td>{{ $question->pivot->points }}</td>
                    </tr>
                @endforeach
            </tbody>
        </table>
    </body>
</html>

но я получаю сообщение об ошибке

Неопределенная переменная: результат (представление: C:\Users\USER\Documents\Laravel-Test-Result-PDF-master\Laravel-Test-Result-PDF-master\resources\views\client\result.blade.php)


person Toby Nwude    schedule 10.05.2020    source источник


Ответы (1)


Ну, насколько я знаю, у вас должен быть класс Mailable и из класса mailable нужно возвращать представление и передавать туда данные. Ваш почтовый класс должен

class ResultMail extends Mailable
{
  use Queueable, SerializesModels;

  public $result;

  /**
   * Create a new message instance.
   *
   */
    public function __construct($result)
    {
        $this->result = $result;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {

        return $this->view('client.result');
    }
}

Должно быть что-то вроде этого. И тогда вам нужно передать данные в ResultMail

\Mail::to('[email protected]')->send(new ResultMail($result));
person mohammad.kaab    schedule 10.05.2020
comment
Могу ли я использовать этот метод для получения $user-›email? - person Toby Nwude; 10.05.2020
comment
Вам нужно передать пользователя в конструкторе public function __construct($result, $user), затем назначить его общедоступному свойству, после чего вы сможете использовать его в своем файле блейда. - person mohammad.kaab; 10.05.2020