Laravel 5.7 Отправить подтверждение по электронной почте на вновь созданного пользователя - PullRequest
0 голосов
/ 10 декабря 2018

На основании этой документации вы можете легко создать подтверждение электронной почты пользователя, когда кто-то регистрируется самостоятельно, но как отправить подтверждение по электронной почте, когда администраторы создали учетную запись для своих пользователей?

Я уже пробовал с этим подходом

<?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

enter image description here

РЕДАКТИРОВАТЬ 2 :: Я уже нахожу проблему, потому что я использую VerifiesEmail, который является ядром проблем, которые у меня были,Спасибо @nakov за его помощь!: D

1 Ответ

0 голосов
/ 10 декабря 2018

В своем классе 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...