Laravel Mail ShouldQueue无法将变量传递给视图

问题描述 投票:0回答:1

有许多类似的问题,最接近的是Laravel 6 Event Listener Mailable Queue unable to access

php:7.2Laravel:5.7

  1. 控制器:
public function send_email(Request $request) {
    $data = $request->json()->all();
    //data: {"to":"[email protected]","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
    ));
}
  1. MailFromNewinc可邮寄:
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');
    }
}
  1. sendmail_from_newinc视图:
<body>
{{ $header??'no header' }}
<br>
{{ $msg??'no content' }}
</body>
</html>

结果:考试科目没有内容

如果我从可邮寄的$ msg中删除ShouldQueue工具,则可以访问,但是如果我留下,则$ msg为null。无论我是否在构建器->with('msg', $this->msg);中设置$ header可以通过两种方式访问​​。

php laravel laravel-5.7
1个回答
0
投票

您将尝试按照以下方式进行操作-

public function build()
{
    $header = $this->header;
    $msg = $this->msg;
    return view('emails.sendmail_from_newinc', compact('header','msg'));
}
© www.soinside.com 2019 - 2024. All rights reserved.