在其他模型中的Laravel电子邮件验证

时间:2019-01-30 08:19:21

标签: php laravel

我需要对评论系统进行电子邮件验证。来宾创建评论时,他可以写电子邮件,名称和评论正文。用户发送评论时,我需要验证是否向他发送电子邮件。如果他确认电子邮件,那么我需要发表评论。我该如何使用标准的Laravel电子邮件验证?我有模型Comment,并且在表中有注释列:emailemail_verified_at。也许我可以为模型Comment实施Trait Email Verification?我不需要检查用户是否已验证其电子邮件地址。如果是,则用户应该能够发表评论。我需要每条评论都可以通过电子邮件验证给他。 1条评论= 1条经过验证的电子邮件(即使重复),我该怎么办?

在模型注释中,我尝试实现VerifyEmail:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;

class Comment extends Model implements MustVerifyEmail
{
    use Notifiable;

    // ...
}

但是接下来我需要做什么?在文档中,只有一个中间件:->middleware('verified'),这是针对用户模型的,我如何为注释模型发送通知电子邮件激活,如何为评论模型发送中间件?

2 个答案:

答案 0 :(得分:1)

您可以简单地进行自定义验证。您可以添加 email_verified 布尔列,并将其默认设置为false。 制定一条路线和方法,将注释的 email_verified 值从false更改为true。 在评论显示页面中,您只显示 email_verified 列为真的评论。 现在,只要用户发表评论,就向他发送一封包含该评论URL的电子邮件,该电子邮件会将该评论的 email_verified 更改为true。

这是基本过程,您可以使用单独表令牌 laravel Observer 使其更加高效。

答案 1 :(得分:0)

我不会将电子邮件验证用于其他模型。

为评论模型创建观察者,然后将经过验证的布尔值添加到评论的迁移表中。

创建评论后,您的观察者将能够向来宾发送通知。