Смещение при нулевом значении для Mailtrap на Laravel 7

Я использую Laravel 7 и PHP 7.4.

Я использую Mailtrap для тестовых писем. Я только что обновил свою версию Laravel до 7.4, и моя электронная почта перестала работать. Когда я пытаюсь отправить демонстрационное письмо, я получаю сообщение об ошибке ниже

Trying to access array offset on value of type null

Проблема здесь:

 {{ $mailData['title'] }}

Контроллер:

class MailController extends Controller {

    public function sendEmail() {
        $email = '[email protected]';

        $mailData = [
            'title' => 'Demo Email',
            'url' => 'https://www.positronx.io'
        ];

        Mail::to($email)->send(new EmailDemo($mailData));

        return response()->json([
            'message' => 'Email has been sent.'
        ], Response::HTTP_OK);
    }

}

MailFile:

class EmailDemo extends Mailable
{
    use Queueable, SerializesModels;
    public $mailData;

    public function __construct()
    { }

    public function build()
    {
        return $this->markdown('email.demoEmail')
            ->with('mailData', $this->mailData);
    }
}

Лезвие:

@component('mail::message')
     {{ $mailData['title'] }}

    The body of your message.

    @component('mail::button', ['url' => $mailData['url']])
        Button Text
    @endcomponent

    Thanks,<br>
    {{ config('app.name') }}
@endcomponent

person Shaan    schedule 23.08.2020    source источник


Ответы (2)


Вы забываете установить $ mailData в constructor(), передать его конструктору и установить значение $this->maildata.

class EmailDemo extends Mailable
{
    use Queueable, SerializesModels;
    public $mailData;

    public function __construct($mailData)
    {
        $this->mailData = $mailData;
    }
}
person mrhn    schedule 23.08.2020
comment
Ой, боже мой! Как пропустить самую главную часть .. Работаем !!!!!!!!!!!!!!!!!! Спасибо ... - person Shaan; 23.08.2020

вы не инициализировали $mailData в классе почтовых уведомлений. вы можете сделать это, как показано ниже:

class EmailDemo extends Mailable
{
    //your other code
    public $mailData;

    public function __construct($mailData)
    {
        $this->mailData = $mailData;
    }
}

Надеюсь, теперь он будет работать.

person Naveed Ali    schedule 23.08.2020
comment
#mrhn уже предложил мне такое же решение выше. Тем не менее, я ценю ваш ответ! - person Shaan; 23.08.2020