如何在Symfony中的EventListener类中处理异常

时间:2019-05-17 08:20:01

标签: symfony symfony-3.3

在EventListener类的onRegistrationSuccess方法上,我有一个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 :(得分:0)

您需要按照in the documentation所述提高监听器的优先级,否则负责电子邮件确认页面的监听器会更早触发

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

您可以使用Flash消息显示错误,如@MohamedRadhiGuennichi建议的那样

订阅FOSUserEvents::REGISTRATION_SUCCESS意味着该用户已经存储在您的数据库中,因此如果发生错误,则应回滚该用户。