Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 21.06.2017 15:43:18

Не вызывается handle события

Всем привет,
Подскажите, в Laravel 5.4.22 хочу в конфе(.env) прописать дефолтового админа и если под ним логиниться и его нет в базе то создать его.
Для этого в app/Http/Controllers/Auth/LoginController.php вызываю событие backendFailOnLogin(2мя способами):

    protected function sendFailedLoginResponse()
    {
        $request = request();
        echo '<pre>sendFailedLoginResponse::'.print_r(1,true).'</pre>';
        $loginCreditialsArray= ['email' => $request->input('email'), 'password' => $request->input('password')];
        event(new backendFailOnLogin($loginCreditialsArray));   // НЕ РАБОТАЕТ
//        $retArray = \Event::fire(new backendFailOnLogin($loginCreditialsArray));   ТАКЖЕ НЕ РАБОТАЕТ

И в app/Events/backendFailOnLogin.php:

<?php

namespace App\Events;

use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use App\User;

class backendFailOnLogin
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $loginCreditialsArray;
    public function __construct(array $loginCreditialsArray)
    {
         // ЭТОТ КОСТРУКТОР ВЫЗЫВАЕТСЯ
        echo '<pre>__construct backendFailOnLogin $loginCreditialsArray::'.print_r($loginCreditialsArray,true).'</pre>';
    }

    public function broadcastOn()
    {
         // ЭТОТ МЕТОД НЕ ВЫЗЫВАЕТСЯ
        die("-1 XXZ backendFailOnLogin broadcastOn::");
    }

    public function handle( array $loginCreditialsArray , Closure $next)
    {
         // ЭТОТ МЕТОД НЕ ВЫЗЫВАЕТСЯ
        echo '<pre>handle $loginCreditialsArray::'.print_r($loginCreditialsArray,true).'</pre>';
        die("-1 XXZ handle");
    }

Я полагаю, что создание нового юзера в конструкторе не хороший способ
а метод handle не вызывается, хотя судя по доке должен
То есть мне нужно :
1) вызвать метод handle c параметрами логина
2) Создать юзера
3) Получить код выполнения для вывода сообщение об успехе или ошибки создания юзера


Что неправильно ?

Спасибо!

Не в сети

#2 21.06.2017 16:32:16

Re: Не вызывается handle события

Все неправильно

Не в сети

#3 21.06.2017 16:42:00

Re: Не вызывается handle события

Вы плохо понимаете работу с событиями. Метод handle() используется у обработчика события (listener), а не у события. Класс события - это некий контейнер данных. А запускается обработчик. Для этого нужно его зарегистрировать. Так что начните с документации. Я по событиям написал пару статей, можете также глянуть.

Не в сети

Подвал раздела