首页 文章

Laravel 5.7发送新创建用户的电子邮件验证

提问于
浏览
0

基于此documentation,当有人通过自己注册时,您可以轻松创建用户电子邮件验证,但是当管理员为其用户创建帐户时,如何发送电子邮件验证?

我已经尝试过这种方法

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Foundation\Auth\VerifiesEmails;

class TeacherController extends Controller
{
    use VerifiesEmails;

    ... // Other basic functions

    public function store(Request $request)
    {
        $rules = [
            'first_name' => ['string', 'required', 'max:255'],
            'last_name' => ['string', 'nullable', 'max:255'],
            'email' => ['string', 'required', 'email', 'max:255', 'unique:users'],
            'password' => ['string', 'required', 'min:6', 'confirmed'],
        ];

        $request->validate($rules);

        $teacher = \App\User::create([
            'first_name' => $request->input('first_name'),
            'last_name' => $request->input('last_name'),
            'email' => $request->input('email'),
            'password' => Hash::make($request->input('password')),
            'role' => 'teacher',
        ]);

        $teacher->sendEmailVerificationNotification();

        return redirect()->route('teachers');
    }

    ... // Other basic functions

}

但它没有工作,也没有任何错误,但如果我使用 $request->user()->sendEmailVerificationNotification(); 它找到了我想要的答案 .

那么如何解决这个问题呢?我是否可以使用laravel的默认功能实现它,还是应该由我自己创建?

编辑::这是当我使用 $request->user()->sendEmailVerificationNotification(); 时发送的电子邮件,它发送到 admin@admin.com 而不是 teacher@teacher.com

编辑2 ::我已经找到了问题,它's because I' m使用 VerifiesEmail 这是我遇到的问题的核心 . 感谢@nakov的帮助! :d

1 回答

  • 1

    在你的 EventServiceProvider 课程中你是否注册了注册事件的监听器?

    /**
     * The event listener mappings for the application.
     *
     * @var array
     */
    protected $listen = [
        Registered::class => [
            SendEmailVerificationNotification::class,
        ],
    ];
    

    并且不要忘记在顶部导入:

    use Illuminate\Auth\Events\Registered;
    use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
    

相关问题