[英]Laravel Mail ShouldQueue unable to pass variables to view
类似的问题还有很多,最接近的Laravel 6 Event Listener Mailable Queue unable to access 。
php:7.2
Laravel:5.7
public function send_email(Request $request) {
$data = $request->json()->all();
//data: {"to":"email@to.me","msg":"test message","subject":"test subject"}
Mail::to($data['to'])->send(new MailFromNewinc( $data['subject'], $data['msg']));
return Response::json(array(
'error' => false,
'status_code' => 200
));
}
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class MailFromNewinc extends Mailable implements ShouldQueue
{
use Queueable, SerializesModels;
public $msg;
public $header;
public function __construct($header, $msg)
{
$this->msg = $msg;
$this->header = $header;
}
public function build()
{
return $this->subject($this->header)
->view('emails.sendmail_from_newinc');
}
}
<body>
{{ $header??'no header' }}
<br>
{{ $msg??'no content' }}
</body>
</html>
结果:
考试科目
无内容
如果我从可邮寄的 $msg 中删除ShouldQueue
实现是可访问的,但如果我离开,$msg 是 null。 无论我是否在 builder ->with('msg', $this->msg);
$header 可以通过两种方式访问。
更新
如果我将变量名称$header
更改为其他名称(可邮寄和视图中的任何位置),它也会停止工作。 是保留字吗?
如果我离开但改变主题:
return $this->subject('custom subject')->view('emails.sendmail_from_newinc');
email 仍然带有在$header
中定义的主题,而不是“自定义主题”。 :O
我已经尝试在 controller 中渲染邮件:
return (new MailFromNewinc($data['subject'], $data['msg']))->render();
它按顺序显示所有内容,所有变量都在适当的位置。
我不知道我是怎么搞砸的,我有另一个邮件,具有几乎相同的设置,但在 __construct function 中有一个 $header 和一个自定义 model,并且所有内容都可以在其视图中访问。
好的,现在我发现了问题:我不得不重新启动队列工作者。
我真的不知道它是如何工作的,但是有些东西卡住了,因为当我更改了可邮寄版本 function 中的视图时,它仍然使用以前的视图发送。
队列重启后一切正常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.