php – Laravel事件侦听器未定义属性错误与ShouldQueue
发布时间:2020-12-14 19:44:25 所属栏目:大数据 来源:网络整理
导读:我的应用程序中有一个事件设置,在用户注册时发送激活电子邮件.没有ShouldQueue接口,它可以完美地工作.但是,当我添加工具ShouldQueue时,我得到未定义的属性错误: Undefined property: AppEventsUserUserCreated::$user 我使用的代码如下: ?phpnamespace
我的应用程序中有一个事件设置,在用户注册时发送激活电子邮件.没有ShouldQueue接口,它可以完美地工作.但是,当我添加工具ShouldQueue时,我得到未定义的属性错误:
我使用的代码如下: <?php namespace AppListenersUser; use AppEventsUserUserCreated; use IlluminateQueueInteractsWithQueue; use IlluminateContractsQueueShouldQueue; use AppReposEmailEmailTemplateRepoInterface; use AppReposUserUserRepoInterface; use Request,Mail,DbView; class UserCreatedEmail implements ShouldQueue { /** * Create the event listener. * * @return void */ public function __construct(EmailTemplateRepoInterface $template) { $this->template = $template; } /** * Handle the event. * * @param UserCreated $event * @return void */ public function handle(UserCreated $event) { $user = $event->user; if($user) { if(!$user->status) { $user->activation_url = Request::root().'/activate/'.$user->activation_code; $template = $this->template->findTemplateByName('new_user_activation'); $userArr = $user->toArray(); } Mail::queue([],[],function ($message) use ($template,$userArr) { $message->to($userArr['email']) ->subject($template->subject) ->setBody(DbView::make($template)->with($userArr)->render(),'text/html'); }); } } } 编辑 这也是UserCreated类: <?php namespace AppEventsUser; use AppEventsEvent; use IlluminateQueueSerializesModels; use IlluminateContractsBroadcastingShouldBroadcast; class UserCreated extends Event { use SerializesModels; /** * Create a new event instance. * * @return void */ public function __construct($user,$row,$request) { $this->user = $user; $this->request = $request; $this->row = $row; } /** * Get the channels the event should be broadcast on. * * @return array */ public function broadcastOn() { return []; } } 任何人都可以解释为什么当我尝试排队邮件时会发生这种情况? 解决方法
您需要将属性明确定义为public.即
class UserCreated extends Event { use SerializesModels; public $user; ... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |