将参数传递给 Laravel 作业不起作用

2024-01-21

我之前读过这个问题的解决方案,但似乎我做错了其他事情,这就是我问的原因:通常解决方案是将参数添加到类的主体以及 __construct 方法中,但甚至这样做它不起作用。

<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Support\Facades\Mail;
use App\Mail\TasksFinished;

class SendMailFinished implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public $tries = 3;

    protected $msg;

    protected $subj;

    protected $mailto;

    public function __construct($msg, $subj, $mailto)
    {
        //
        $this->msg = $msg;
        $this->subj = $subj;
        $this->mailto = $mailto;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        //Envia correo cuando termine cola.
        Mail::to($this->mailto)->queue(new TasksFinished($this->msg, $this->subj));
    }

我尝试在修补程序中以这种方式通过队列运行它:

use App\Jobs\SendMailFinished;
$job = new SendMailFinished('Hola', 'Prueba', '[email protected] /cdn-cgi/l/email-protection');
$job->dispatch();

类型错误:函数参数太少 App/Jobs/SendMailFinished::__construct(), 0 传入 C:/larragon/www/reportes/vendor/laravel/framework/src/Illuminate/Foundation/Bus/Dispatchable.php 在第 16 行,正好是预期的第 3 行

为什么即使在类中和实例化期间指定了所有参数后,在分派时仍然看不到任何参数。 (我也尝试过公开参数,但这是同一件事)。


你打电话时dispatch()您应该将参数发送到那里。

尝试静态调用它

SendMailFinished::dispatch('Hola', 'Prueba', '[email protected] /cdn-cgi/l/email-protection');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将参数传递给 Laravel 作业不起作用 的相关文章

随机推荐