Как обработать исключение внутри класса EventListener в Symfony - PullRequest
0 голосов
/ 17 мая 2019

В методе onRegistrationSuccess класса EventListener у меня есть вызов API, который регистрирует пользователя в другой системе.

$response = $this->service->postCustomer($customer)

if (200 !== $response->getCode() {
   $response = new RedirectResponse($event->getRequest()->getPathInfo());
   $event->setResponse($response);
}

У меня вопрос, как лучше всего поймать ошибку или отобразить ее на той же странице? Например, маршрут на /user/register ответ - ошибка проверки. Потому что сейчас он все еще перенаправляет использование на страницу проверки электронной почты.

Кстати, я использую FOSUserBundle. Я действительно новичок в Symfony, поэтому не знаю, как лучше это сделать

Спасибо!

1 Ответ

0 голосов
/ 17 мая 2019

Вам необходимо увеличить приоритет вашего слушателя, как описано в документации , в противном случае слушатель, отвечающий за страницу подтверждения по электронной почте, запускается раньше

public static function getSubscribedEvents()
{
    return [
        FOSUserEvents::REGISTRATION_SUCCESS => [
            ['onRegistrationSuccess', 10],
        ],
    ];
}

Вы можете использовать флэш-сообщения для отображенияошибка, предложенная @ MohamedRadhiGuennichi

Подписка на FOSUserEvents::REGISTRATION_SUCCESS означает, что пользователь уже сохранен в вашей базе данных, поэтому вы должны откатить ее в случае ошибки.

...