FOSUserBundle, EventListener регистрация пользователя - PullRequest
0 голосов
/ 15 мая 2018

Я работаю над FOSUserBundle, над EventListener для RegistrationUser.

В этом пакете при создании пользователя я использую метод updateUser () (в Vendor ... Model / UserManagerInterface).Этот метод, по-видимому, подчиняется EventListener, который запускает как минимум два действия.Регистрация информации, введенной в базу данных.И отправив электронное письмо пользователю, чтобы отправить ему учетные данные для входа.

Я нашел способ отправки почты.К минусам, я не нашел того, кто делает запись.Я также не нашел, где установить два события.

Во-первых (и моя личная информация), я пытаюсь найти эти два пункта до сих пор неизвестными.Если бы кто-нибудь мог направить меня?

Тогда, в зависимости от того, что мы решим с нашим клиентом, я могу перейти на дополнительную плату (которую я до сих пор не знаю, как это сделать), но я думаю, что я найдунемного лучше, когда мои два незнакомца нашли: -)

Спасибо за ваше внимание и помощь: -)

1 Ответ

0 голосов
/ 16 мая 2018

Это функция, которая обрабатывает подтверждение по электронной почте о регистрации.пытаться делать это плохая практика.Рекомендуется следующий способ:

Шаг 1: Выберите одно из следующих событий для прослушивания (в зависимости от того, когда вы хотите перехватить процесс)

/**
     * The REGISTRATION_SUCCESS event occurs when the registration form is submitted successfully.
     *
     * This event allows you to set the response instead of using the default one.
     *
     * @Event("FOS\UserBundle\Event\FormEvent")
     */
    const REGISTRATION_SUCCESS = 'fos_user.registration.success';

/**
     * The REGISTRATION_COMPLETED event occurs after saving the user in the registration process.
     *
     * This event allows you to access the response which will be sent.
     *
     * @Event("FOS\UserBundle\Event\FilterUserResponseEvent")
     */
    const REGISTRATION_COMPLETED = 'fos_user.registration.completed';

Шаг 2 Реализация подписчика событий с приоритетом

    public static function getSubscribedEvents()
    {
        return array(
            FOSUserEvents::REGISTRATION_SUCCESS => [
                'onRegistrationSuccess', 100 //The priority is higher than the FOSuser so it will be called first
            ],
        );
    }

Шаг 3 Реализация вашей функции

public function onRegistrationSuccess(FormEvent $event)
    {
       //do your logic here

        $event->stopPropagation();//the Fos User method shall never be called!!
        $event->setResponse(new RedirectResponse($url));
    }

Никогда не следует изменять сторонние библиотеки, в этом случае система диспетчера событий предназначена для более ранней обработки события и, если необходимо, для остановки распространения и предотвращения «повторной обработки» события.

Hopeэто помогает !!!!

...