После выполнения шагов по проверке подлинности почты Laravel возникнет проблема. - PullRequest
0 голосов
/ 17 мая 2019

Следуя инструкциям по реализации родной почты, проверка laravel.Приносит мне ошибку.

Обратите внимание, что я использую MongoDB, поэтому я использую пакет Jensseger / laravel-mongodb

Это ошибка: Class App\User contains 3 abstract methods and must therefore be declared abstract or implement the remaining methods (Illuminate\Contracts\Auth\MustVerifyEmail::hasVerifiedEmail, Illuminate\Contracts\Auth\MustVerifyEmail::markEmailAsVerified, Illuminate\Contracts\Auth\MustVerifyEmail::sendEmailVerificationNotification

IЯ уже пытался реализовать методы внутри моей модели, и они, похоже, решают проблему.Но он не будет отправлять электронные письма.

Вот что я реализовал в моей модели User.php

    * Determine if the user has verified their email address.
    *
    * @return bool
    */
    public function hasVerifiedEmail()
    {}

    /**
    * Mark the given user's email as verified.
    *
    * @return bool
    */
    public function markEmailAsVerified()
    {}

    /**
    * Send the email verification notification.
    *
    * @return void
    */
    public function sendEmailVerificationNotification()
    {}

Вот моя модель User.php

namespace App;

use App\Company;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Jenssegers\Mongodb\Auth\User as Authenticatable;

class User extends Authenticatable implements MustVerifyEmail
{
    use Notifiable;

    protected $connection = 'mongodb';

Вот мой файл маршрута web.php.

Route::get('/', function () {
    return view('welcome');
});

Auth::routes(['verify' => true]);

Route::get('/home', 'HomeController@index')->name('home');

А вот мой HomeController.php

    public function __construct()
    {
        $this->middleware(['auth','verified']);
    }

Вот мой файл env

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=25
MAIL_USERNAME=xxxxxxxxxxx
MAIL_PASSWORD=xxxxxxxxxxxx
MAIL_ENCRYPTION=tls

Как этот проектработать, но это не будет отправлять электронные письма.Мне нужно поместить логику в три метода внутри User.php?Если да, что я должен положить в это?Я понятия не имею, потому что, если он родной и работает как шарм с SQL, я не знаю, как заставить его работать в моем проекте. Надеюсь, у кого-то есть решение для этого.Спасибо

1 Ответ

1 голос
/ 18 мая 2019

Самое простое решение - реализовать черту Illuminate\Auth\MustVerifyEmail, которая должна быть там, однако она не упоминается в документации Laravel.Вы также можете переопределить эти методы, определив их в модели, как вы это сделали.Но методы hasVerifiedEmail и markEmailAsVerified должны иметь некоторую логику проверки и возвращать bool на основе API .

Редактировать : Я также забыл упомянуть, что метод sendEmailVerificationNotification должен содержать $this->notify(new Notifications\VerifyEmail);, в противном случае он не будет использовать черту Notifiable и, следовательно, не будет отправлять никакие электронные письма.Для более подробной информации взгляните на метод в Laravel Framework репозиторий ,

...