【问题标题】:Pass data to Mail Job/Queue - Lumen/Laravel将数据传递到邮件作业/队列 - Lumen/Laravel
【发布时间】:2016-05-21 02:24:44
【问题描述】:

我正在使用Lumen,想知道如何将data 传递给我的job 班级。 我有我的job 类,如下所示;

<?php

namespace App\Jobs;

use App;
use Illuminate\Contracts\Mail\Mailer;

class TestEmailJob extends Job
{
    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct()
    {
        //

    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle(Mailer $mailer)
    {
        //
        $data; // I want to pass this from my function
        $mailer->queue('emails.emailtemplate', $data , function ($message) {
            $message->from('support@xxx.com', 'Laravel');

            $message->to('xxx@gmail.com')->cc('xxx@yahoo.co.uk');
        });
    }
}

然后我有一个函数可以将作业推送到队列中;

public function emailTest () {

    $data = ['user' => $user];

    Queue::push(new TestEmailJob);
}

如何传递$data 并接收它并在job 类中使用它?

【问题讨论】:

    标签: laravel laravel-5 lumen


    【解决方案1】:

    你可以通过传递给构造函数来实例化变量

    class TestEmailJob extends Job implements SelfHandling, ShouldQueue
    {
        use InteractsWithQueue;
    
        protected $data;
    
    
        public function __construct($data)
        {
            $this->data = $data;
        }
    
        public function handle()
        {
            // $this->data;
        }
    }
    

    现在从控制器中,你可以这样称呼它:

    $this-&gt;dispatch(new TestEmailJob($data));

    http://laravel.com/docs/5.1/queues#writing-job-classes

    【讨论】:

    • 我就这样传过去? Queue::push(new TestEmailJob($data));
    • 您可以像这样从控制器将其分派到队列中:$this-&gt;dispatch(new TestEmailJob($data));
    • 为什么不直接使用Mail::queue()
    • @BenSwinburne 取决于您是否启用了 Facades。我也用Mail::queue()
    • @moh.ABK 我的意思是,如果您使用的是$mailer-&gt;queue() 或同等产品,您为什么要排队等待邮件排队?为什么不直接从emailTest() 排队邮件。我原本也打算评论这个问题,而不是这个答案。道歉。
    猜你喜欢
    • 2014-02-22
    • 2017-10-20
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    相关资源
    最近更新 更多