
本文档旨在帮助 Laravel 8 开发者解决在控制器中创建邮件类时,如何将参数传递到邮件视图中的问题。通过修改邮件类的构造函数,并在build方法中传递数据,最终在 Blade 模板中使用这些数据,从而实现动态邮件内容生成。本文将提供详细的代码示例和步骤,帮助开发者快速掌握该技巧。
在 Laravel 中,将数据从控制器传递到邮件视图的关键在于正确地使用邮件类的构造函数和 build 方法。以下是详细的步骤和代码示例:
1. 修改邮件类构造函数
首先,需要修改邮件类的构造函数,使其能够接收来自控制器的数据。在 App\Mail\RegisterMail 类中,添加一个私有属性 $data 用于存储数据,并在构造函数中接收这个数据。
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class RegisterMail extends Mailable
{
use Queueable, SerializesModels;
private $data;
public function __construct($data)
{
$this->data = $data;
}
public function build()
{
return $this->markdown('emails.register', ['data' => $this->data])
->subject('Register SLeAgro Agricultural Product Distribution System');
}
}2. 在 build 方法中传递数据
在 build 方法中,将 $data 数组传递给邮件视图。通过将 $data 数组作为第二个参数传递给 markdown 方法,可以在视图中使用这个数组中的数据。
3. 修改控制器代码
在控制器中,创建邮件类实例时,将需要传递的数据作为参数传递给构造函数。
$data1 = [
'email' => $request->email,
'password' => $code
];
$mail = new RegisterMail($data1);
Mail::to($request->email)->send($mail);4. 在 Blade 模板中使用数据
现在,可以在 Blade 模板 emails.register.blade.php 中使用 $data 变量访问传递的数据。
@component('mail::message')
# Welcome SleAgro Agricultural Product Management System
you can loging to the system using following credetail .
User name : {{ $data['email'] }}
<br>
password : {{ $data['password'] }}
@component('mail::button', ['url' => 'http://127.0.0.1:8000/login'])
Login
@endcomponent
Thanks,<br>
{{ config('app.name') }}
@endcomponent通过修改邮件类的构造函数,并在 build 方法中传递数据,可以方便地将数据从控制器传递到邮件视图。这种方法使得邮件内容可以根据不同的用户或场景动态生成,从而提高用户体验。记住在 Blade 模板中使用 $data['key'] 的方式访问数据,并注意数据的封装性,就可以轻松地实现动态邮件内容生成。
以上就是Laravel 8:在邮件视图中传递控制器参数的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号