我有我的工作类别ProductPublish
方法handle()
,我正在尝试发送电子邮件。
public function handle()
{
//
Mail::to('i******o@gmail.com')->send(new SendEmail());
}
在ProductController
控制器中,我像下面这样调用该作业类
ProductPublish::dispatch();
在可发送的SendEmail类中,我试图像下面这样传递数据以查看
public $message;
public function __construct($message)
{
$this->message = 'This is test message';
}
public function build()
{
return $this->view('email.product.product-publish')->with('message' => $this->message);
}
但是它不起作用。我也尝试了不附加任何with()
方法,但仍能得到结果。在电子邮件视图中,我正在像下面一样
{{ $message }}
有人可以指导我什么可能是它不起作用的问题。另外,我实际上想从ProductController
传递数据,但是由于我无法从sendEmail
传递数据,因此我还没有从控制器尝试过。
请指导我如何解决它。
答案 0 :(得分:2)
在laravel中,
The arguments passed to the dispatch method will be given to the job's constructor
因此,当您调用调度时,可以传递消息:
ProductPublish::dispatch($message);
然后在您的工作中,可以添加属性message
和构造函数,以从调度中获取并分配它:
private $message;
public function __construct($message)
{
$this->message = $message;
}
public function handle()
{
// Use the message using $this->messge
Mail::to('i******o@gmail.com')->send(new SendEmail($this->message));
}
您还可以直接将电子邮件排队。选中documentation
答案 1 :(得分:0)
尝试一下:
public $message;
public function __construct($message)
{
$this->message= $message;
}
public function build()
{
// Array for passing template
$input = array(
'message' => $this->message
);
return $this->view('email.product.product-publish')
->with([
'inputs' => $input,
]);
}
选中Docs