【发布时间】: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