nmeri17 Ответов: 0

Как запустить события после проверки пользователя в laravel?


Я следовал всем инструкциям в https://laravel.com/docs/5.8/verification , а также несколько учебных пособий по этой теме, но события никогда не срабатывают

Пользовательская модель

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Contracts\Auth\MustVerifyEmail;

class User extends Authenticatable implements MustVerifyEmail
{
    use HasApiTokens,Notifiable;

// dozens of orm rel methods here...



На вершине моей web.php файл маршрутов

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


Ремесленный маршрут:список говорит

| Вам|руководителя | электронной почты-проверка/проверка/{маркер} | электронная почта-
verification.check | App\Http\Controllers\Auth\RegisterController@getVerification | web,guest |


У меня есть это свойство в моем VerificationController:

protected $redirectTo = '/home';


И он действительно пытается посетить эту ссылку, что означает, что строительные леса действительно работают

В моем eventsServiceProvider у меня есть


protected $listen = [
        'App\Events\Event' => [
            'App\Listeners\EventListener',
        ],
        'Illuminate\Auth\Events\Verified' => [
            'App\Listeners\LogVerifiedUser',
        ]
    ]


Я запустил команду make:event, и она создала это событие для меня в этом каталоге, который я отредактировал, чтобы передать мои данные по выбору слушателю. Однако регистрация чего-либо внутри события или прослушивателя не имеет никакого эффекта. Вызов БД, который я намереваюсь сделать внутри него, не вставляется.

в LogVerifiedUser у меня есть

public function handle(Verified $event)
    {
        $user = $event->user;

        // use the data's properties here and return nothing


В самом событии мы имеем

class Verified
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $user;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct(\App\User $user)
    {
        $this->user = $user;
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new PrivateChannel('channel-name');
    }
}

Скажите, есть ли еще одна часть приложения, которая может вас заинтересовать. Большое спасибо

Что я уже пробовал:

Я проверил метод getVerification, который обрабатывает маршрут проверки, и в нем не срабатывает такое событие. Должен ли я вызвать родительский метод в переопределении, а затем отправить свое желаемое событие внутри него? Я предполагаю, что это должно сработать, хотя я еще не пробовал этого делать-причина этой нерешительности заключается в том, что если я должен вручную отправить это событие, то по крайней мере один из учебников намекнет или упомянет его. Является ли событие запущенным где-то, что я случайно пропустил, или Я свободен вызвать его?

0 Ответов