Чтобы передать параметры в Laravel Mailable, вы можете использовать разные методы в зависимости от ваших конкретных требований. Вот несколько методов, которые вы можете использовать, а также примеры кода:
Метод 1: внедрение в конструктор
В этом методе вы передаете параметры через конструктор вашего класса Mailable. Вот пример:
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class WelcomeEmail extends Mailable
{
use Queueable, SerializesModels;
public $user;
public function __construct($user)
{
$this->user = $user;
}
public function build()
{
return $this->view('emails.welcome');
}
}
Затем вы можете передать этот параметр при создании экземпляра Mailable:
use App\Mail\WelcomeEmail;
use Illuminate\Support\Facades\Mail;
$user = User::find(1);
Mail::to($user->email)->send(new WelcomeEmail($user));
Метод 2: общедоступные свойства
В этом методе вы определяете общедоступные свойства в своем классе Mailable и присваиваете им значения. Вот пример:
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class WelcomeEmail extends Mailable
{
use Queueable, SerializesModels;
public $user;
public function build()
{
return $this->view('emails.welcome');
}
}
После этого вы сможете присвоить значения свойствам перед отправкой электронного письма:
use App\Mail\WelcomeEmail;
use Illuminate\Support\Facades\Mail;
$user = User::find(1);
$mail = new WelcomeEmail();
$mail->user = $user;
Mail::to($user->email)->send($mail);
Метод 3: с помощью метода
Вы можете использовать метод withдля передачи данных в представление электронной почты. Вот пример:
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class WelcomeEmail extends Mailable
{
use Queueable, SerializesModels;
public $user;
public function __construct($user)
{
$this->user = $user;
}
public function build()
{
return $this->view('emails.welcome')
->with(['user' => $this->user]);
}
}
Затем вы можете передать этот параметр при создании экземпляра Mailable:
use App\Mail\WelcomeEmail;
use Illuminate\Support\Facades\Mail;
$user = User::find(1);
Mail::to($user->email)->send(new WelcomeEmail($user));
Это три распространенных метода передачи параметров в Laravel Mailables. Выберите метод, который лучше всего соответствует вашим потребностям, исходя из вашего конкретного случая использования.