Laravel: отправить имя пользователя по электронной почте - PullRequest
0 голосов
/ 23 апреля 2020

Так что моя функциональность электронной почты может отправлять электронные письма пользователям. Однако я хочу иметь возможность отправлять электронные письма с именем пользователя, которое они вводят при регистрации. Например, «Привет», Джон, в котором имя - это введенное имя. У меня есть следующий код:

RegisterController. php:

    protected function create(array $data)
{
    Mail::to($data['email'])->send(new WelcomeMail());
    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => Hash::make($data['password']),
    ]);

}
}

Welcome.blade. php

@component('mail::message')

Welcome to the Hotel Booking System {{$data->name}}

 The body of your message.



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

Теперь в welcome.blade. php, где я получаю сообщение об ошибке неопределенной переменной $ name. Как бы я исправить это с помощью двух частей кода.

1 Ответ

1 голос
/ 23 апреля 2020

Вам нужно будет передать данные в WelcomeMail ()

Mail::to($data['email'])->send(new WelcomeMail($data['name']));

Внутри класса WelcomeMail

public $name;

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

Чем вы можете получить доступ к переменной name внутри вашей уценки

Welcome to the Hotel Booking System {{$name}}

Если вы хотите передать весь массив $ data в конструктор

send(new WelcomeMail($data);

Вы можете сделать это

public $data;

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

Или

public $name, $email;

public function __construct($data)
{
    $this->name = $data['name];
    $this->email = $data['email];
}

Вы также можете передавать каждое значение отдельно

send(new WelcomeMail($data['name'], $data['email']);
public function __construct($name, $email)
{
    $this->name = $name;
    $this->email = $email;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...