Laravel 5.3发送通知到用户,无需账号
随着Laravel 5.3提醒功能,我看到通知这样发送给用户:Laravel 5.3发送通知到用户,无需账号
$user->notify(new InvoicePaid($invoice));
在哪里,我相信$user
是法定实体。如果我想向没有帐户的用户发送通知,该怎么办?在我的应用程序中,用户发送邀请给他们的朋友加入。我正尝试使用Laravel的通知将邀请代码发送给尚未拥有帐户的用户。
当用户邀请的人,他们的数据存储在邀请模式是这样的:
class Invite extends Model
{
protected $table = 'invites';
protected $fillable = array('name', 'email', 'invite_code', 'expires_at', 'invited_by');
protected $dates = ['expires_at'];
}
我想我可以用通知将通知发送到邀请模式是这样的:
$invite = Invite::find($inviteId);
$invite->notify(new InvitationNotification(ucfirst($invite->name), $invite->invite_code, $invite->expires_at));
但上述不起作用。我得到的错误:
Call to undefined method Illuminate\Database\Query\Builder::notify()
所以我的问题是:
我是否能够发送通知只有用户模型?
有没有办法将通知发送给没有 帐户的新用户?
是我唯一的选择是使用Laravel的可邮寄类,而不是通知在这些情况下?
我发现你的帖子寻找相同的东西,但自己回答。
您需要use Notifiable;
在Invite
模型。
然后您输入use Illuminate\Notifications\Notifiable;
,并且应该能够在Invite
模型上使用->notify
。
$invite = Invite::create([
'name' => $request->get('name'),
'email' => $request->get('email'),
'token' => str_random(60),
]);
$invite->notify(new UserInvite());
这就是我如何处理发送通知:)
然后,您可以通过$invite
和使用通知模板中。
通知意在被发送到呈报对象。你不“通知”邀请。
如果所有你想要做的是,他们已经邀请到使用应用程序的电子邮件的人,那么就请发送电子邮件至该电子邮件地址。通知在这种情况下不适用。
谢谢@马丁。从逻辑上讲,这确实有道理。我试图使用通知的唯一原因是由于易于在文本和html中使用标准电子邮件模板并为此添加数据库条目。但是,是的,我确实明白,邮寄类可能更合适,因为这不是用户通知。 – Neel
我只是想出了一个更简单的方法。首先你必须重写你的RegisterController类中的'register'函数。为了做到这一点:
use Illuminate\Http\Request;
use Illuminate\Auth\Events\Registered;
public function register(Request $request)
{
}
然后添加这些行在您的注册功能;
-
$user = $this->create($request->all());
//创建并保存用户 -
$user->notify(new NewRegistrationNotification($request));
//调用指定通知类 return redirect()->to('/')->with('msg', 'Thanks for registering! Check your inbox for the activation link');
接下来,配置您的通知类来处理消息发送。我在构造函数中做了这样的事情;
protected $data;
public function __construct(Request $request)
{
$this->data = $request;
}
我希望这有助于某人。
完美。这正是我所坚持的,因为我没有找到解决方案,我最终将这些通知重写为邮件。感谢您发布您的答案。我现在将其添加到我的应用程序中,并使用通知而不是邮件。非常感谢。 – Neel