【问题标题】:issue in mailable and queue in laravellaravel 中的可邮寄和队列问题
【发布时间】:2019-10-20 03:12:51
【问题描述】:

我无法将表单数据从 laravel 中的控制器传递给作业

下面是我的控制器

public function sendmail_action(Request $request){
        try{
            $data=$request->all();
            $this->dispatch(new LeadSendmailJob($data));
            return response()->json(['status'=>'true']);
        }catch (\Exception $e){
            return response()->json(['status'=>'false','msg'=>$e->getMessage()]);
        }

    }

下面是工作

<?php

namespace App\Jobs;

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

class LeadSendmailJob implements ShouldQueue

{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public $data;
    public function __construct(array $data)
    {
        $this->data=$data;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
      Mail::to('sdf@gmail.com')->send(new LeadMail($this->data));
    }
}

下面是邮件

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;

class LeadMail extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public $data;
    public function __construct(array $data)
    {
        $this->data=$data;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->markdown('frontend.emails.lead-mail')
            ->from('info@nextaussietech.com')
            ->with(['message'=>$this->data->message]);
    }
}

在失败的作业表中我得到了这个异常

ErrorException: Trying to get property 'message' of non-object in C:\xampp\htdocs\CRM\app\Mail\LeadMail.php:34

它在使用模型数据时有效,但在我传递表单数据时无效

【问题讨论】:

    标签: laravel


    【解决方案1】:

    $data 不是一个对象,它是一个数组; Request::all() 返回一个数组。您不能使用与对象相同的符号来访问数组。

    $this->data['message']; // access element of the array
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      • 2018-03-16
      • 2016-07-06
      • 1970-01-01
      • 2018-10-27
      • 2020-02-16
      相关资源
      最近更新 更多