php – Laravel事件侦听器未定义属性错误与ShouldQueue
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – Laravel事件侦听器未定义属性错误与ShouldQueue,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1896字,纯文字阅读大概需要3分钟。
内容图文
![php – Laravel事件侦听器未定义属性错误与ShouldQueue](/upload/InfoBanner/zyjiaocheng/805/3626ae3f9bef46648eb267f0411ea01f.jpg)
我的应用程序中有一个事件设置,在用户注册时发送激活电子邮件.没有ShouldQueue接口,它可以完美地工作.但是,当我添加工具ShouldQueue时,我得到未定义的属性错误:
Undefined property: App\Events\User\UserCreated::$user
我使用的代码如下:
<?php
namespace App\Listeners\User;
use App\Events\User\UserCreated;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use App\Repos\Email\EmailTemplateRepoInterface;
use App\Repos\User\UserRepoInterface;
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 App\Events\User;
use App\Events\Event;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
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;
...
内容总结
以上是互联网集市为您收集整理的php – Laravel事件侦听器未定义属性错误与ShouldQueue全部内容,希望文章能够帮你解决php – Laravel事件侦听器未定义属性错误与ShouldQueue所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。