NewsletterStoreジョブにデータを送信したいのですが。しかし、次のエラーで失敗しています。助言がありますか?
また、SerializesModelsモデルの特性を削除しようとしました。成功せずに。
エラー
Exception
Serialization of 'Closure' is not allowed
コントローラー
public function store(StoreNewsletterRequest $request)
{
StoreNewsletterJob::dispatch($request);
return view('backend.dashboard.index');
}
仕事
protected $request;
public function __construct($request)
{
$this->request = $request;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
if(!Newsletter::isSubscribed($this->request->email))
{
Newsletter::subscribe($this->request->email, [
config('newsletter.list_fields.firstname') => $this->request->firstname,
config('newsletter.list_fields.lastname') => $this->request->lastname
]);
}
}
Request
はシリアル化できません達成しようとしている回避策があります
public function store(StoreNewsletterRequest $request)
{
StoreNewsletterJob::dispatch($request->all());
return view('backend.dashboard.index');
}
あなたのジョブハンドラー。
public function handle()
{
if(!Newsletter::isSubscribed($this->request['email']))
{
Newsletter::subscribe($this->request['email'], [
config('newsletter.list_fields.firstname') => $this->request->firstname,
config('newsletter.list_fields.lastname') => $this->request->lastname
]);
}
}
お役に立てれば
私は別のアプローチに従いました、ちょうどあなたを助けるかもしれません!
コントローラー
$newsletter = (object) array(
'email' => $request->email,
'firstname' => $request->firstname,
'lastname' => $request->lastname,
);
StoreNewsletterJob::dispatch($newsletter);
仕事
protected $newsletter;
public function __construct( object $newsletter)
{
$this->newsletter = $newsletter;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
if(!Newsletter::isSubscribed($this->newsletter->email))
{
Newsletter::subscribe($this->newsletter->email, [
config('newsletter.list_fields.firstname') => $this->newsletter->firstname,
config('newsletter.list_fields.lastname') => $this->newsletter->lastname
]);
}
}