net*_*djw 1 php laravel laravel-blade
在我的 Laravel 8 项目中,我尝试发送 HTML 电子邮件,但Undefined variable出现错误。
我的控制器中有此代码:
// here the $client has a model value
Mail::to($client)->send(new ClientCreated($client));
Run Code Online (Sandbox Code Playgroud)
在我的app/Mail/ClientCreated.php文件中:
<?php
namespace App\Mail;
use App\Client;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class ClientCreated extends Mailable
{
use Queueable, SerializesModels;
private $client;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct(Client $client)
{
$this->client = $client;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
// here the $this->client has a model value
return $this->view('emails.client.created');
}
}
Run Code Online (Sandbox Code Playgroud)
最后在我的resources/views/emails/client/created.blade.php我有这个代码:
<p>Dear{{ $client->name }}!</p>
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息:
Undefined variable: client (View: /home/vagrant/Code/myproject/laravel/resources/views/emails/client/created.blade.php)
Run Code Online (Sandbox Code Playgroud)
我阅读了文档并在 Stackoverflow 上搜索,但没有找到任何帮助。
知道我做错了什么吗?
Arm*_*min 10
如果你正确地将变量传递给视图,但仍然不起作用,请尝试在控制台中重新启动队列:
php artisan queue:restart
Run Code Online (Sandbox Code Playgroud)
您应该$client公开而不是私有:
public $client;
Run Code Online (Sandbox Code Playgroud)
“您可以通过两种方式将数据提供给您的视图。首先,您的可邮寄类中定义的任何公共属性都将自动提供给视图”
Laravel 8.x 文档 - 邮件 - 编写邮件 - 查看数据 - 通过公共属性
另一种方法是调用with:
$this->view(...)->with('client', $this->client);
Run Code Online (Sandbox Code Playgroud)
“如果您想在将电子邮件数据发送到模板之前自定义其格式,您可以通过该
with方法手动将您的数据传递给视图。”
Laravel 8.x 文档 - 邮件 - 编写邮件 - 查看数据 - 通过with方法
如果您不想更改$client为,public则使用第二种方法。
| 归档时间: |
|
| 查看次数: |
1631 次 |
| 最近记录: |